2010-08-11 92 views
2

這是一個2部分問題。在不檢查現有數據的情況下創建外鍵

問題1:我試圖在需要關閉「檢查現有數據創建或重新啓用」的表上創建外鍵。我知道這是一個可視化的選項,但我正在尋找一種以編程方式執行此操作的方法。無論如何要做到這一點?

問題2:我有一個代碼表和兩個需要引用該代碼表的表A和B.我希望這些都是從關係表中引用的,但我希望能夠使用同一列。我可以有兩個外鍵指向同一列嗎?

回答

9

是的,你可以在父表中有相同的列引用多個表中的不同列。

我不建議在創建時關閉檢查FK。如果你現在有不好的數據,你現在需要修復它。否則,如果有人第一次編輯其中一條記錄,那麼它將不能通過FK檢查。

從聯機叢書,爲什麼它是一個壞主意,使用NOCHECK:

如果你不想對 現有數據驗證新的CHECK 或外鍵約束,WITH NOCHECK使用。我們做 不建議這樣做,但在 罕見的情況下。在以後的所有數據更新中對新約束條件進行評估後會得到 。 當添加約束 約束時,被WITH NOCHECK抑制的任何約束違規( )可能導致未來 更新失敗,如果它們更新的行數不符合約束的 行。

+0

你知道關閉檢查命令嗎?它會是A.ID - > Rel.ID,B.ID - > Rel.ID他們不能都是外鍵? (注意箭頭指向的方式) – Gage 2010-08-11 18:56:32

+0

如果你想讓一列指向兩個不同的父鍵,那麼不要這樣做。請爲兩個鍵中的每一個創建連接表,以便正確執行關係或使用兩個字段並允許空值。 – HLGEM 2010-08-11 19:57:21

相關問題