25

我想要两个表之间的外键,所以我像往常一样尝试它。现在我遇到的问题是他无法创建,并且看起来它无法创建,因为已经有一个密钥但没有。

- Unable to create relationship 
 'FK_tbl_Paramed_RegistratieBehandelingen_Users'.  
  The ALTER TABLE statement conflicted with the 
  FOREIGN KEY constraint "FK_tbl_Paramed_RegistratieBehandelingen_Users". 
  The conflict occurred in database "Nestor_Server", 
  table "dbo.Users", column 'UserID'.

我检查了它们是否具有相同的类型,它们确实(bigint)所以不明白为什么他不会创建它

4

3 回答 3

52

您可能在 RegistratieBehandelingen(不确定表名)中有记录,而用户表中不存在这些记录。

select * from RegistratieBehandelingen a where UserID IS NULL or
not exists (select 1 from Users b where b.UserID= a.UserID)
于 2012-07-04T07:47:40.947 回答
12

这意味着您有没有匹配父 ID 的子数据。

运行以下命令以查看是否有任何结果:

SELECT * 
FROM tbl_Paramed_RegistratieBehandelingen r
LEFT JOIN Users u on r.UserID = u.UserID
WHERE u.UserID IS NULL

(在适当的地方更改表名和列名)

如果您得到任何结果,那么它应该显示哪些记录包含与用户不匹配的用户 ID。

于 2012-07-04T07:50:17.260 回答
0

在上述查询之后,您可能希望从表 tbl_Paramed_RegistratieBehandelingen 中删除不存在的 UserId 或将它们插入到表 Users 中。

于 2014-05-28T09:22:23.317 回答