2012-01-04 32 views
1

假设这两个表:SQL服务器外键约束 - 对(相同的元组)

TBL1

ID 
name 
fkID1 
fkID2 

tbl2的

ID 
pkID1 
pkID2 

每当数据插入到tbl1,我如何确保(fkID1, fkID2)作为tbl2中的一行(元组)存在n表格(pkID1, pkID2)

我没有问题做出约束,所以fkID1必须存在和fkID2必须存在,但我想确保它们存在于同一行。

通过SQL或通过管理工作室创建它的说明将是伟大的。

回答

5

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

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

这个问题我有点问题:'pkID1'是tbl2中的FK本身,'pkID2'根本就不是关键。 SQL返回“被引用表中没有主键或候选键”。我能做些什么来解决这个问题?我可以让'pkID1'和pkID2'为tbl2中的PK吗?现有的关系如何与'pkID1'作为FK来说'tbl3'? – Marcus 2012-01-04 19:50:13

+0

新问题在这里,非常相关:http://stackoverflow.com/questions/8733548/foreign-key-in-composite-primary-key – Marcus 2012-01-04 20:28:36