Sql-Server-2000
在數據導入期間刪除約束與禁用約束
我處境艱難,正在尋求有關如何進行的建議。我必須將一些數據從一個環境導入到另一個環境。80% 的記錄已被修改,因此計劃是簡單地刪除所有現有記錄,並導入新記錄。
不幸的是,這是一個基表。其他幾個表定義了 FK,指向此表。為了刪除數據,我需要刪除 FK 並在完成導入後重新創建它們,或者禁用約束並重新啟用它們。
沒有記錄被刪除。製作了一份 prod 副本,開發人員調整了數據並添加了新記錄。
你會採取哪種方法?
按照 Mikael Eriksson 的建議,我會在不刪除/禁用外鍵的情況下進行導入。
這樣做的缺點是,如果您想要刪除值被 FK 引用的任何記錄,或者想要更新值以使原始值不再在表中並被 FK 引用。
在這些情況下,您需要跟踪任何此類問題並決定如何處理每個“衝突”(不要更新/刪除、更改其他表中的數據或其他解決方案)。
與刪除/禁用 FK、導入然後恢復 FK 相比,這將更快、更容易並確保數據完整性。