業務場景: 某天truncate大量表時遇到錯誤ORA-O2266:表中的唯一/主鍵被啟用的外鍵引用,不想看ER圖來禁用大量複雜約束,所以研發了三種套路... 一. 最偷懶套路 如果要一次性導出很多表, 懶得看ER圖, 可以用巧辦法: PLSQL developer: Tools Export ta ...
業務場景: 某天truncate大量表時遇到錯誤ORA-O2266:表中的唯一/主鍵被啟用的外鍵引用,不想看ER圖來禁用大量複雜約束,所以研發了三種套路... 一. 最偷懶套路
如果要一次性導出很多表, 懶得看ER圖, 可以用巧辦法: PLSQL developer:
- Tools
- Export tables
- 選中要導出的所有表(按住Ctrl多選)
- 導出形式選 "SQL Inserts" 腳本
- 選擇截斷表 "Truncate tables "
- 選擇禁用所有外鍵約束 "Disable foreign key constraints"
- Where 條件選 "1=2"
- 最後點"Export"導出腳本
二. 最二筆套路 哪個表報錯就把哪個表單 truncate 改成 delete from; 大表時間會很長... 所以不建議使用! 三. 最危險套路 ORA-02266報錯原因是因為DDL語句不會檢查約束 , 所以根據錯誤提示 "表中的唯一/主鍵被啟用的外鍵引用" 想到禁用表的唯一/主鍵 就可以進行truncate了 alter table rdxx disable constraints cascade; truncate table rdxx; alter table rdxx enable constraints; cascade 選項會刪除和此表主鍵相關聯的所有約束! 一定慎用!!!