我在两个不同的数据库中有两个表。在table1(在database1)中,有一个名为column1的列,它是主键。现在在表2(在数据库2)中有一个名为column2的列,我想将其添加为外键。
我尝试添加它,但出现以下错误:
Msg 1763, Level 16, State 0, Line 1
Cross-database foreign key references are not supported. Foreign key Database2.table2.Msg 1750, Level 16, State 0, Line 1
Could not create constraint. See previous errors.
由于这些表位于不同的数据库中,我该如何做到这一点。
最佳答案
您需要使用触发器管理跨数据库的引用约束。
<小时/>基本上,您创建一个插入、更新触发器来验证主键表中键是否存在。如果该键不存在,则恢复插入或更新,然后处理异常。
示例:
Create Trigger dbo.MyTableTrigger ON dbo.MyTable, After Insert, Update
As
Begin
If NOT Exists(select PK from OtherDB.dbo.TableName where PK in (Select FK from inserted) BEGIN
-- Handle the Referential Error Here
END
END
<小时/>
已编辑:只是为了澄清。这不是强制引用完整性的最佳方法。理想情况下,您希望两个表位于同一个数据库中,但如果这是不可能的。那么以上就是您可能的解决方法。
关于sql - 添加两个数据库之间的外键关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4452132/