22

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

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

回答

48

这可能是你在RegistratieBehandelingen记录(不知道用户表中不存在)。

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

是一个空值滑落导致网络似乎这就是为什么它继续失败。谢谢 –

+0

正是..我只是有同样的问题。要测试是否属于这种情况,请尝试使用“NO CHECK”创建外键。这将创建密钥,但如果现有数据与您尝试创建的确切外键规则不匹配,则不会发生。 –

11

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

运行以下来看看你得到任何结果:如果你得到任何结果的话,它应该显示哪些记录(在适当情况下改变表和列名)

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

包含用户ID,唐与用户不匹配。

0

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