2013-07-11 55 views
0

進出口新的SQL限制列值,並且正在使用SQL Server Managmetn工作室V11SQL使用另一個表

遇到問題與我的結構

林:

例如,如果我有一個表水果

FruitID,名稱,FAMILYID,ColourID

家庭

FAMILYID,名稱

AllowedColour

ID, FamilyID, ColourID 
1,  1,  56 
2,  1,  88 
3,  1,  99 
4,  2,  56 
5,  2,  57 

所以在Allowed Colour我列出了一定的家庭可以有顏色。 如何限制在Fruit表中輸入的值,以便只允許將顏色賦予水果?

回答

1

爲AllowedColors添加一個唯一約束。 (並考慮刪除列「ID」)。

alter table AllowedColors 
add constraint your_constraint_name 
unique (FamilyID, ColorID); 

可能希望每個這些列的被宣佈NOT NULL了。我會把它留給你。

現在,您可以使用該對列作爲外鍵約束的目標。

alter table fruit 
add constraint another_constraint_name 
foreign key (FamilyID, ColorID) 
    references AllowedColors (FamilyID, ColorID); 

您還需要一個從AllowedColors.FamilyID到Family.FamilyID的外鍵。

+0

謝謝您的回覆。這對我非常有幫助,我沒有意識到我可以以這種方式使用Unqiue Constraint – MrB

+0

如果您刪除「ID」列,則可以聲明{FamilyID,ColorID}爲主鍵,而不是聲明它們唯一。其他一切工作都一樣。 –

+0

這正是我所做的,謝謝 – MrB