如何截斷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. Java-Sqlite截斷所有數據庫表
- 4. mySQL:截斷所有表的命令
- 5. shell腳本截斷所有MySql表
- 6. 截斷HSQLDB中的所有表格
- 7. 截斷所有表格 - 房間
- 8. 如何從aspnet架構中截斷所有表?
- 9. MS SQL Server如何截斷所有表的行的長度?
- 10. 如何從截斷的表
- 11. 如何截斷HTML表格
- 12. 如何使用Doctrine截斷表格?
- 13. 如何使用C#截斷表格#
- 14. 如何用Spring JdbcTemplate截斷表格?
- 15. 如何使用greenDAO截斷表格
- 16. 用戶輸入被截斷
- 17. MySQL表格 - 截斷還是不截斷?
- 18. Azure截斷表
- 19. 截斷表sqlkorma
- 20. BeautifulSoup截斷表
- 21. 截斷表?
- 22. 使用截斷表,沒有結果
- 23. 如何截斷wp_rss
- 24. 如何截斷我的MySQL數據庫中的所有數據?
- 25. 如何更新所有行截斷毫秒
- 26. Python和CSV;如何截斷列中的所有值?
- 27. 是否有任何截斷?
- 28. 使用LINQ截斷表格
- 29. 用jquery截斷列表
- 30. 使用hibernate/hql截斷表?
-1沒有解決處理約束的必要性 – APC 2009-11-09 12:11:51