2012-09-04 30 views
2

我試圖在Appointments表和Center表之間的數據庫中建立關係。在fk表中添加與未鏈接值的關係

有關係統的一個怪癖是,如果用戶區域中沒有中心記錄,它仍然必須允許記錄預約。在這種情況下,鏈接的centreid將具有0值。

這意味着我得到了以下錯誤:

The ALTER TABLE statement conflicted with the FOREIGN KEY constraint 'fk_appointments_centres".

我使用創建關係的代碼如下:

alter table appointments 
add constraint fk_appointments_centres 
foreign key (centreid) 
references centres(centreid) 
on delete cascade 
go 

這是因爲客戶想要的功能非常重要從系統中刪除中心,在這種情況下,爲了妥善保存數據,如果中心被刪除,它也應該刪除中心的預約。

理想情況下,我希望這種關係能夠正常工作,但由於中心表上的centreid列有IDENTITY_INSERT ON,我不認爲這會起作用。

我可以考慮2個其他選項,但它們並不理想,所以如果可能的話,我希望能夠使其工作。

任何人都可以幫我嗎?

編輯
我剛纔看到的東西MSDN上如果有人建議不驗證現有的數據。這似乎可以奏效,但這將如何影響數據輸入? Reference here

+0

是否有外鍵不能爲空的原因? – devdigital

回答

0

我認爲將FK設置爲​​可能存在引用ID的列上的記錄並不是一個好主意! (你有一個ID爲0的中心去哪裏參考?)

1:而不是使用0,你應該嘗試使用NULL來代替。因爲那時FK就會起作用。

2:像ID一個特殊的ID,其可以支持這種引用

3創建一個「admin」的記錄:在最後一種情況下,你可以嘗試使用該表上刪除觸發器,以使其「手動」,但我不建議這種解決方案。

+0

你試過了DBNull.Value嗎? –

+1

哈哈我一發現就刪除了我的評論:D感謝。 NULL選項適用於我。這只是意味着在使用預約數據時,我必須非常小心。 – Ortund

+0

好吧,那就好了:)我認爲這是您的案例的正常和最佳解決方案。 –