在轉移數據庫,進行數據導入的時候,遇到一件麻煩事,就是表間外鍵約束的存在,導致insert頻頻報錯,批量執行sql語句又是順序執行,沒辦法我只好手動輸入。
然后輸入到一半靈光一閃,為什么不先把外鍵約束全部禁用先呢?
于是我百度到以下資料:
oracle 刪除(所有)約束 禁用(所有)約束 啟用(所有)約束
執行以下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';
關于Oracle批量執行sql語句之禁用所有表的外鍵的相關內容,就給大家介紹這么多,后續還會持續更新,感興趣的朋友請繼續關注腳本之家網站,謝謝!
您可能感興趣的文章:- Oracle批量插入數據的三種方式【推薦】
- C# Oracle批量插入數據進度條的實現代碼
- Oracle + Mybatis實現批量插入、更新和刪除示例代碼
- MyBatis批量插入數據到Oracle數據庫中的兩種方式(實例代碼)
- Oracle兩張表關聯批量更新其中一張表的數據
- Oracle批量查詢、刪除、更新使用BULK COLLECT提高效率
- mybatis執行批量更新batch update 的方法(oracle,mysql兩種)
- Oracle批量導入文本文件快速的方法(sqlldr實現)
- Oracle+Mybatis的foreach insert批量插入報錯的快速解決辦法
- Java實現mybatis批量插入數據到Oracle
- oracle+mybatis 使用動態Sql當插入字段不確定的情況下實現批量insert
- Oracle 高速批量數據加載工具sql*loader使用說明
- Oracle數據庫更新大批量數據案例