外键无法创建

时间:2012-07-04 07:35:25

标签: sql-server foreign-keys constraints foreign-key-relationship

我想在2个表之间使用外键,所以我会像往常一样尝试它。现在我遇到的问题是他无法创建,并且由于它的外观无法创建,因为已经存在密钥但是没有。

- 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)所以不明白为什么他不会创建它

3 个答案:

答案 0 :(得分:51)

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

select * from RegistratieBehandelingen a where UserID IS NULL or
not exists (select 1 from Users b where b.UserID= a.UserID)

答案 1 :(得分:11)

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

运行以下内容以查看是否有任何结果:

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

(在适当的情况下更改表名和列名)

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

答案 2 :(得分:0)

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