在轉移資料庫,進行數據導入的時候,遇到一件麻煩事,就是表間外鍵約束的存在,導致insert頻頻報錯,批量執行sql語句又是順序執行,沒辦法我只好手動輸入。 然後輸入到一半靈光一閃,為什麼不先把外鍵約束全部禁用先呢?於是我百度到以下資料:oracle刪除(所有)約束禁用(所有)約束啟用(所有)約束(....
在轉移資料庫,進行數據導入的時候,遇到一件麻煩事,就是表間外鍵約束的存在,導致insert頻頻報錯,批量執行sql語句又是順序執行,沒辦法我只好手動輸入。
然後輸入到一半靈光一閃,為什麼不先把外鍵約束全部禁用先呢?
於是我百度到以下資料:
oracle 刪除(所有)約束 禁用(所有)約束 啟用(所有)約束
(2009-06-17 09:56:32)執行以下sql生成的語句即可
1
刪除所有外鍵約束
select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='R'
2
禁用所有外鍵約束
select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
3
啟用所有外鍵約束
select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
在SQL Plus中輸入語句後,生成了很多語句,這些語句其實是沒執行的,複製下來執行一遍就好了。
然後我們可以根據這個腳本一樣的sql語句進行拼裝,得到我們需要的語句:
禁用所有外鍵約束:
select 'ALTER TABLE "QIANHAI"."'||table_name||'" MODIFY CONSTRAINT "'||constraint_name||'" DISABLE;' from user_constraints where constraint_type='R'
啟用所有外鍵約束:
select 'ALTER TABLE "QIANHAI"."'||table_name||'" MODIFY CONSTRAINT "'||constraint_name||'" ENABLE;' from user_constraints where constraint_type='R';