oracle删除所有表数据

declare
cursor c1 is select table_name from user_tables;
stmt varchar2(4000);
begin
for cc in c1 loop
BEGIN
stmt:='Truncate table'||cc.table_name;
dbms_output.put_line(stmt);
execute immediate stmt;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('error'||stmt);
end;
end loop;
end;
/
由于有外键关联关系的表不能直接Truncate
暂时先将外键关系改成cascade
然后将Truncate table 改为 delete


ORA-02266: 表中的唯一/主键被启用的外键引用


在删除有父子表关系的表的数据时,我们都知道要先删除子表再删除父表数据。或者先取消外键在删除。昨天采用先删字表在删父表,删除时使用truncate,结果在删除父表的时候,给出了这个提示:“表中的唯一/主键被启用的外键引用”。而改成delete则删除成功。网上给出的解释是ddl与dml 的区别。这也是truncate与delete的又一个不同之处
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值