【发布时间】:2014-08-14 10:56:57
【问题描述】:
考虑两个数据库表,tbl_One 和 tbl_Two。
tbl_One 的主键是:A、B & E 列
tbl_Two 的主键是:B & C。
我不希望表tbl_Two 列B 中不存在表tbl_One 列B 中的任何值。
理想情况下,我希望列 B 成为外键,但是当我尝试创建它时,我收到以下错误消息:
表“tbl_One”中的列与现有主键不匹配 或 UNIQUE 约束。
我怎样才能做到这一点?
【问题讨论】:
-
在 tbl_One 中,A、B、E 三列一起是复合键吗?你说有“主键”(复数)有点令人困惑。
-
MasterData 是什么表? tbl_One 还是 tblTwo?
-
@Gizmo 它是 tbl_One,我更正了错误消息。
-
@AaronPalmer 我不知道什么是复合键,我只是选择了3列,右键选择主键。
-
在您的方案中,您尚未将
B本身标识为任一表中的 PK。因此,B本身不能用作与这两个表的关系中的 FK。基本上,一个表中的 FK 必须是被引用表中的 PK。
标签: sql-server-2008 tsql foreign-key-relationship