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中。