我在Oracle TABLE_A和TABLE_B的兩個表中都有大約20000到30000條記錄。在Oracle數據庫的兩個表中交換外鍵
在表-B的記錄是通過外鍵鏈接到TABLE_A記錄 - (表-B包含TABLE_A的主鍵)
我需要交換的外鍵。即
我希望現在TABLE_A應該包含TABLE_B的主鍵。 (這是一個功能要求 - 因爲在前端的一些驗證,在當前形式的數據庫實現這些表上的更新是不可能的。)
此外,雖然這樣做,我想記錄從(TABLE_B - > TABLE_A)鏈接仍保持鏈接。 現在通過新的外鍵(TABLE_A - > TABLE_B)。
FOREIGN KEY可以通過幾個ALTER TABLE命令輕鬆移動,主要問題區域是保持數據並正確地重新鏈接它。
執行此操作最明顯的方法將涉及到備份整個表,然後創建新腳本以在兩個表中重新插入更新的數據。
有沒有更快的方法來做到這一點,沒有任何錯誤的機會。
除非表格處於1:1關係 - 即。表A中的每一行在表B中都有一行,表B中的每一行在表A中都有一行 - 我沒有看到這個工作。如果他們是1:1,我不明白他們爲什麼是兩張桌子,而不是一張桌子。 –
@DavidAldridge,1:1關係在超類/子類模型中很常見。在單個寬表中避免大量NULL列。 –
@JeffreyKemp是的,我想是的 - 儘管引用子類表的超類開始會是相當錯誤的。 –