7 février 2003

Activation / désactivation des clefs étrangères sous Oracle

Les tables techniques et les tables fonctionnelles utilisent des clefs étrangères et de "delete en cascade". Leur présence est nécessaire au bon fonctionnement du produit. Lors de certaines opérations (export - import Oracle de données) il peut être utile de les désactiver temporairement.

Faire le bilan des contraintes inactivées :
select constraint_name,validated from user_constraints where constraint_type='R' and validated <> 'VALIDATED'

Créer des ordres SQL pour désactiver les clefs étrangères :

select 'alter table '||table_name||' modify constraint '|| constraint_name||' disable novalidate;'     
from user_constraints where constraint_type='R';

Créer des ordres SQL pour réactiver les clefs étrangères :
select 'alter table '||table_name||' modify constraint '|| constraint_name||' enable validate;'     
from user_constraints where constraint_type='R';

Attention car certaines tables (ex: PP12) peuvent posséder une contrainte non nommée (Oracle va donc lui attribuer un nom système et la numéroter différemment sur chaque environnement).

Aucun commentaire:

Enregistrer un commentaire