sql server 2005中的外键

时间:2009-11-20 11:02:59

标签: sql-server foreign-keys

我在sql 2005中创建外键时遇到了麻烦。

我的主键表有一个跨越2列的主键。

我想创建我的外键,因此它引用了我的主表中的列,但是我想为第二列指定一个静态值 - 这可能吗?

1 个答案:

答案 0 :(得分:0)

不,你不能这样做 - 如果你从子表中引用父表,你必须引用父表上主键的所有列:

ALTER TABLE dbo.ChildTable
  ADD CONSTRAINT FK_ChildTable_ParentTable
  FOREIGN KEY (col1, col2) REFERENCES dbo.ParentTable(pkCol1, pkCol2)

你不能突然在你的参考中引入“静态”值。

您可以在子表上执行的操作是在第二列上放置CHECK CONSTRAINT以使其成为“静态”值 - 但是在该列中您永远不会有任何其他值:

ALTER TABLE dbo.ChildTable
  ADD CONSTRAINT chk_col2_Static CHECK (col2 = 4)

这就是你要找的东西吗?