2

爲什麼在SQL Server中啓用時不應該違反外鍵?爲什麼在啓用時不應該違反外鍵?

我們有兩個表格,Order HeaderOrder Detail

Order header表的OrderID列參考文獻OrderDetail表的OrderID列。

然後,我將使用生產數據庫中的一些數據遷移到這些表中。 我只是禁用這些表外鍵約束和從生產Db插入數據。

插入數據後,訂單明細表的OrderID列包含值101,102,103,但訂單表頭的Order ID列僅包含值100

然後我嘗試使用下面的T-SQL代碼

exec sp_msforeachtable "ALTER TABLE ? CHECK CONSTRAINT ALL" 

爲什麼不應該違反與現有數據外鍵,同時使啓用外鍵約束?

回答

3

當您移動從與的Fkey連接的多個表中的數據 - 你應該:移動 當兩個表

  • 或發出在引用表更換適當的Fkey列的新值

    • 或保存鍵值

    當您啓用FKey約束時 - 默認情況下檢查數據一致性

  • 相關問題