如何截断oracle中的所有用户表?我有表约束的问题。如何截断所有用户表?
11
A
回答
0
无需变量
begin
for r in (select table_name from user_tables) loop
execute immediate 'truncate table ' || r.table_name;
end loop;
end;
问候 ķ
6
declare
begin
for c1 in (select table_name, constraint_name from user_constraints) loop
begin
execute immediate ('alter table '||c1.table_name||' disable constraint '||c1.constraint_name);
end;
end loop;
for t1 in (select table_name from user_tables) loop
begin
execute immediate ('truncate table '||t1.table_name);
end;
end loop;
for c2 in (select table_name, constraint_name from user_constraints) loop
begin
execute immediate ('alter table '||c2.table_name||' enable constraint '||c2.constraint_name);
end;
end loop;
end;
/
0
可以输出,然后执行一个你喜欢的:万一
set serveroutput on;
begin
for r in (select table_name from user_tables) loop
dbms_output.put_line('truncate table ' || r.table_name);
end loop;
end;
2
改进你有特殊限制这使上面的脚本失败:
set serveroutput on;
declare
begin
for c1 in (select y.table_name, y.constraint_name from user_constraints y, user_tables x where x.table_name = y.table_name) loop
begin
dbms_output.put_line('alter table '||c1.table_name||' disable constraint '||c1.constraint_name || ';');
execute immediate ('alter table '||c1.table_name||' disable constraint '||c1.constraint_name);
end;
end loop;
for t1 in (select table_name from user_tables) loop
begin
execute immediate ('truncate table '||t1.table_name);
end;
end loop;
for c2 in (select table_name, constraint_name from user_constraints) loop
begin
execute immediate ('alter table '||c2.table_name||' enable constraint '||c2.constraint_name);
end;
end loop;
end;
/
+1
令人遗憾的是约束受命令的“约束”。 您可以通过在'disable'命令结尾处添加'cascade'来修复约束的禁用。 但很可能你不会自动激活约束。 – mmoossen 2015-03-30 08:19:05
3
如果因为依赖关系存在(以依赖于此约束的外键的形式 - ORA-02297。)并通过打印all(disable,truncate和启用)语句。
set serveroutput on;
declare
begin
for c1 in (select y1.table_name, y1.constraint_name from user_constraints y1, user_tables x1 where x1.table_name = y1.table_name order by y1.r_constraint_name nulls last) loop
begin
dbms_output.put_line('alter table '||c1.table_name||' disable constraint '||c1.constraint_name || ';');
execute immediate ('alter table '||c1.table_name||' disable constraint '||c1.constraint_name);
end;
end loop;
for t1 in (select table_name from user_tables) loop
begin
dbms_output.put_line('truncate table '||t1.table_name || ';');
execute immediate ('truncate table '||t1.table_name);
end;
end loop;
for c2 in (select y2.table_name, y2.constraint_name from user_constraints y2, user_tables x2 where x2.table_name = y2.table_name order by y2.r_constraint_name nulls first) loop
begin
dbms_output.put_line('alter table '||c2.table_name||' enable constraint '||c2.constraint_name || ';');
execute immediate ('alter table '||c2.table_name||' enable constraint '||c2.constraint_name);
end;
end loop;
end;
相关问题
- 1. H2 - 如何截断所有表?
- 2. 截断Moodle的用户表
- 3. mySQL:截断所有表的命令
- 4. shell脚本截断所有MySql表
- 5. 截断所有表格 - 房间
- 6. 如何从截断的表
- 7. 如何截断HTML表格
- 8. 如何使用Doctrine截断表格?
- 9. 如何用Spring JdbcTemplate截断表格?
- 10. 用户输入被截断
- 11. 截断表sqlkorma
- 12. 使用截断表,没有结果
- 13. 如何截断wp_rss
- 14. 如何截断我的MySQL数据库中的所有数据?
- 15. Python和CSV;如何截断列中的所有值?
- 16. 使用hibernate/hql截断表?
- 17. 用jquery截断列表
- 18. 有没有办法检查截断表?
- 19. 如何在轨中截断连接表?
- 20. 如何在C#中截断列表?
- 21. 如何还原截断的表格
- 22. 如何正确截断表格?
- 23. 截断表中所有MySQL列除了第一
- 24. Rake任务,以截断所有表中的Rails 3
- 25. 截断SQL Server中的所有关系表
- 26. 截断postgres数据库中的所有表
- 27. 如何使open()截断现有文件
- 28. 不能截断表
- 29. 表截断与AbcPdf
- 30. 截断SAS LASR表
-1没有解决处理约束的必要性 – APC 2009-11-09 12:11:51