2012-01-04 35 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