SSMS不会让我建立PK FK关系

时间:2019-03-05 03:12:26

标签: sql ssms relationship

首先,我要说我是新手,并且阅读过许多其他有相同问题的文章。我有一个名为“ AllPeople”的表,并且在该表中有一个名为“ Ethnicity”的整数列,我想将其用作指向“ RefEthnicities”表中记录的外键。我不断收到以下消息:

  

无法创建关系'FK_AllPeople_RefEthnicities'。
  ALTER TABLE语句与FOREIGN KEY约束“ FK_AllPeople_RefEthnicities”冲突。在数据库“ MVC-Cemeteries-Dev”的表“ dbo.RefEthnicities”的“ ID”列中发生了冲突。

我在“ AllPeople”表中设置了关系,并告诉它主键是“ RefEthnicities”中的ID列,外键是“ AllPeople”表中的“ Ethnicity”列。我究竟做错了什么?我的RefEthnicities表是新的;里面没有数据。

在设计模式下,我通过单击名称“ ID”左侧的小框并在同一属性窗口中的列属性选项卡中的下方,将“ RefEthnicities”表中的ID字段设置为主键,我告诉它将索引规范设置为“是”。

我确定这很简单,但我无法弄清楚。
Error Message

Constraint Folder

Setting Up PK FK Link

3 个答案:

答案 0 :(得分:0)

作为我在问题中有限的信息,有2种可能性

表AllPeople中的种族栏的

NULL或空白 ''

SELECT A.Ethnicity,A.*
FROM dbo.AllPeople A
WHERE ISNULL(A.Ethnicity,'')=''

某些值列表AllPeople中的种族在表RefEthnicities中的列ID中没有父项

SELECT A.Ethnicity,R.ID, *
FROM dbo.AllPeople A
LEFT JOIN RefEthnicities R
 ON A.Ethnicity=R.ID
WHERE R.ID IS NULL

如果两个查询中都有任何行,则需要修复表AllPeople中的“种族”列中的数据。

Read

答案 1 :(得分:0)

好吧,这仍然没有意义。如果我使用以下命令创建两个全新的表:

表1   ID主键int不可为空   值varchar   table2FK

表2   ID主键int不可为空   值varchar

在table1中,我建立了table2FK和Table2.ID之间的关系,它可以完美工作,并且表中没有数据。如果我在AllPeople和RefEthnicicties表中使用完全相同的过程,则会收到错误消息。这是没有道理的。我想念什么? 亚当

答案 2 :(得分:0)

解决了。非常感谢。我在AllPeople表中记录了一个种族,该记录的值为0。由于我在RefEthnicity表中没有ID为0的记录,因此我无法这样做。

adam