SQL使用另一个表限制列值

时间:2013-07-11 14:54:33

标签: sql key

我是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表格中输入的值,以便只能为水果提供允许的颜色?

1 个答案:

答案 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的外键。