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的又一个不同之处