我在SQL Server中有两个数据库,两个数据库都有一个公用表,一个重要的大表保存着其他表的外键。问题是该表位于DatabaseA中,我需要从DatabaseB引用该表的外键。

我知道SQL不支持跨数据库引用完整性,那么实现此目的的最佳方法是什么?我正在考虑将两个数据库合并成一个数据库-除了复杂性增加外,这无关紧要。

有什么建议?

最佳答案

如果可以的话,我会避免这样做-您可以将两个表都保存在一个数据库中并使用FK吗?

父表和子表位于不同的数据库中。

尽管在这种情况下不能使用外键,但是有一些解决方法–您可以使用检查约束中包装的触发器或UDF。无论哪种方式,您的数据完整性都不是完全防水的:如果带有父表的数据库崩溃了,并且您从备份中还原了它,则很容易导致孤立。

触发器会强制执行父子关系。

有很多情况下触发器不触发,例如:

·删除表。

·表被截断。

·嵌套和/或递归触发器的设置可防止触发触发器。

同样,触发器可能只是不正确的。无论哪种方式,您最终都可能在数据库中出现孤儿。

07-25 23:43
查看更多