【发布时间】:2015-07-17 16:24:23
【问题描述】:
我正在尝试添加外键约束,但无法弄清楚我做错了什么。提前感谢您的任何建议。
使用 MyTestDB
ALTER TABLE 播放器
添加约束 FK_Player_Team
外键(Team_Name,Team_Location)
参考团队(团队名称,团队位置)
消息 1776,第 16 级,状态 0,第 8 行 引用表“TEAM”中没有与外键“FK_Player_Team”中的引用列列表匹配的主键或候选键。 消息 1750,第 16 级,状态 0,第 8 行 无法创建约束。查看以前的错误。
【问题讨论】:
-
我建议您的团队主键有问题。为什么不能在给定位置有两个同名的团队?他们可能在不同的部门。还有,到处抄队也是有问题的,队名变了怎么办?一般来说,您似乎缺乏适当规范化的必要表格。我认为您至少需要会议、分区、体育场、州的桌子。否则,您只会不断重复信息。此外,所有内容的 varchar(50) 似乎都关闭了。例如,为什么不声明为 char(2)。
-
您的 ALTER TABLE 语句应该根据您显示的图像工作,这让我认为它们目前不准确。刷新表的 SSMS 视图,并验证它们没有更改。如果不是这种情况,请查看是否可以编写 CREATE TABLE 语句并发布它们,以便我们可以尝试重现此问题。如果您的问题是准确的,我看不出它怎么可能发生。
-
您可以尝试的一件事是,首先,在“TEAM”之后的左括号之前放置一个空格,并在其前面加上“dbo”。只是看看这是否有所作为。不应该,但我是格式良好的 SQL 的忠实拥护者。
-
我已经刷新并尝试使用空间并添加“DBO”。对球员和球队。没有骰子。
-
你能提供一个脚本来重现这个问题吗?