Amélioré le script ci-dessus dans le cas où vous ne pouvez pas supprimer la contrainte en raison des dépendances existent (sous la forme de clés étrangères qui dépendent de cette contrainte - ORA-02297.) et par l'impression de l'ensemble (désactiver, tronquée et activer) consolidés.
set serveroutput on;declarebeginfor c1 in(select y1.table_name, y1.constraint_name from user_constraints y1, user_tables x1 where x1.table_name = y1.table_name orderby 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 orderby 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;
Amélioration dans le cas où vous avez des contraintes particulières qui font de script ci-dessus échouent:
set serveroutput on;declarebeginfor 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
beginexecute immediate ('truncate table '||t1.table_name);end;end loop;for c2 in(select table_name, constraint_name from user_constraints) loop
beginexecute immediate ('alter table '||c2.table_name||' enable constraint '||c2.constraint_name);end;end loop;end;/
malheureusement, les contraintes sont "contraint" par l'ordre. vous pouvez fixer la désactivation des contraintes par l'ajout de 'cascade' à la fin de la 'désactiver'. mais plus probablement, vous ne serez pas en mesure d'automatiser l'activation des contraintes.
OriginalL'auteur dgt
Amélioré le script ci-dessus dans le cas où vous ne pouvez pas supprimer la contrainte en raison des dépendances existent (sous la forme de clés étrangères qui dépendent de cette contrainte - ORA-02297.) et par l'impression de l'ensemble (désactiver, tronquée et activer) consolidés.
OriginalL'auteur Volker
Amélioration dans le cas où vous avez des contraintes particulières qui font de script ci-dessus échouent:
OriginalL'auteur Ernst
Pas nécessaire pour les variables
Ce qui concerne
K
OriginalL'auteur Khb
Vous pouvez de sortie, puis exécutez l'une que vous aimez:
OriginalL'auteur Israel Margulies