程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 批量執行語句之——禁用所有表的外鍵,執行語句禁用

批量執行語句之——禁用所有表的外鍵,執行語句禁用

編輯: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';

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved