【问题标题】:SQL Server foreign key constraint - pair (same tuple)SQL Server 外键约束——对(同一个元组)
【发布时间】:2012-01-04 18:46:46
【问题描述】:

假设这两个表:

tbl1

ID
name
fkID1
fkID2

tbl2

ID
pkID1
pkID2

每当将数据插入tbl1 时,如何确保(fkID1, fkID2)tbl2 中以(pkID1, pkID2) 的形式作为一行(元组)存在?

我没有问题,所以fkID1 必须存在并且fkID2 必须存在,但我想确保它们存在于同一行中。

通过 SQL 或通过管理工作室创建它的指令都很好。

【问题讨论】:

    标签: sql sql-server sql-server-2008 foreign-keys constraints


    【解决方案1】:

    您可以只用逗号分隔要检查的列。只要确保它们井井有条。

    alter table tbl1 with check 
    add constraint FK_tbl1_tbl2 
    foreign key (fkID1, fkID2) 
    references tbl2 (pkID1, pkID2)
    

    【讨论】:

    • 我对这个问题有一个小问题:pkID1 是 tbl2 中的 FK 本身,pkID2 根本不是键。 SQL 返回There are no primary or candidate keys in the referenced table。我能做些什么来解决这个问题?我可以将pkID1 和 pkID2` 设置为 tbl2 中的 PK 吗?现有的关系如何与pkID1 作为 FK 说tbl3 一起工作?
    • 这里有新问题,非常相关:*.com/questions/8733548/…