概述
最近在转移数据库,进行数据导入的时候,遇到一件麻烦事,就是表间外键约束的存在,导致insert频频报错,批量执行sql语句又是顺序执行,手动输入的工作量又太大。所以这里考虑是不是可以把外键约束全部禁用先?总结如下:
1、删除所有外键约束
select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='R'
![67a0ba67b77ce3bbb450df3c3a02b901.png](https://img-blog.csdnimg.cn/img_convert/67a0ba67b77ce3bbb450df3c3a02b901.png)
2、禁用所有外键约束
select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
![b6240ec307cddf1af69e535aed4a88eb.png](https://img-blog.csdnimg.cn/img_convert/b6240ec307cddf1af69e535aed4a88eb.png)
3、启用所有外键约束
select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R';
![73dbcdaa9e4c644048e84702b171aa4c.png](https://img-blog.csdnimg.cn/img_convert/73dbcdaa9e4c644048e84702b171aa4c.png)
接下来只要可以根据这个脚本得到的语句执行就可以了。
篇幅有限,关于Oracle批量执行sql语句之禁用所有表的外键的相关内容就介绍到这了。后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~
![d373c92b42283fc3291210a2a268b71d.gif](https://img-blog.csdnimg.cn/img_convert/d373c92b42283fc3291210a2a268b71d.gif)