我是SQL新手,我正在使用SQL Server Managmetn Studio V11
我的结构有问题:
例如,如果我有一个表水果:
FruitID,Name,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
表格中输入的值,以便只能为水果提供允许的颜色?
答案 0 :(得分: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的外键。