SQL Server外键约束-对(相同元组)

SQL Server外键约束-对(相同元组),sql,sql-server,sql-server-2008,foreign-keys,constraints,Sql,Sql Server,Sql Server 2008,Foreign Keys,Constraints,假设这两个表: tbl1 ID name fkID1 fkID2 tbl2 ID pkID1 pkID2 无论何时将数据插入tbl1,我如何确保(fkID1,fkID2)在tbl2中以(pkID1,pkID2)的形式存在 我在创建约束时没有问题,因此fkID1必须存在,而fkID2必须存在,但我希望确保它们存在于同一行中 无论是通过SQL还是通过ManagementStudio创建它的指令,都将非常棒。您可以用逗号分隔要检查的列。只要确保它们是有序的 alter table tbl1 wit

假设这两个表:

tbl1

ID
name
fkID1
fkID2
tbl2

ID
pkID1
pkID2
无论何时将数据插入
tbl1
,我如何确保
(fkID1,fkID2)
tbl2
中以
(pkID1,pkID2)
的形式存在

我在创建约束时没有问题,因此
fkID1
必须存在,而
fkID2
必须存在,但我希望确保它们存在于同一行中


无论是通过SQL还是通过ManagementStudio创建它的指令,都将非常棒。

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

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

可以用逗号分隔要检查的列。只要确保它们是有序的

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

关于这个问题,我有一个小问题:
pkID1
在tbl2中本身就是一个FK,
pkID2
根本不是密钥。SQL返回
引用的表中没有主键或候选键
。我能做些什么来解决这个问题?我可以将
pkID1
和pkID2`作为tbl2中的PK吗?如果
pkID1
是一个FK,那么现有的关系将如何运作呢?这里有一个新问题,非常相关:我有一个小问题需要解决:
pkID1
在tbl2中是一个FK,而
pkID2
根本不是一把钥匙。SQL返回
引用的表中没有主键或候选键
。我能做些什么来解决这个问题?我可以将
pkID1
和pkID2`作为tbl2中的PK吗?如果
pkID1
是FK,那么现有关系将如何运作呢?可以说
tbl3
?这里有一个新问题,非常相关: