A propos de la compilation des déclencheurs et des dépendances

Les déclencheurs compilés dépendent des objets de schéma sur lesquels ils sont définis. Si un objet dont dépend un déclencheur est supprimé ou modifié de sorte à supprimer les correspondances entre l'objet et le déclencheur, alors le déclencheur est invalidé.

L'exécution d'une instruction CREATE TRIGGER compile le déclencheur en cours de création. Si cette compilation provoque une erreur, l'instruction CREATE TRIGGER échoue. Pour afficher les erreurs de compilation, utilisez l'instruction suivante :

SELECT * FROM USER_ERRORS WHERE TYPE = 'TRIGGER';

Les déclencheurs compilés dépendent des objets de schéma sur lesquels ils sont définis. Par exemple, NEW_EVALUATION_TRIGGER dépend de la table EVALUATIONS.

CREATE OR REPLACE
TRIGGER NEW_EVALUATION_TRIGGER
BEFORE INSERT ON EVALUATIONS
FOR EACH ROW
BEGIN
  :NEW.evaluation_id := evaluations_seq.NEXTVAL;
END;

Pour afficher les objets de schéma dont dépendent les déclencheurs, utilisez l'instruction suivante :

SELECT * FROM ALL_DEPENDENCIES WHERE TYPE = 'TRIGGER';

Si un objet qui dépend d'un déclencheur est supprimé ou modifié pour supprimer la correspondance entre l'objet et le déclencheur, alors le déclencheur est invalidé. Le déclencheur est recompilé à la prochaine appel. Pour recompiler un déclencheur immédiatement, utilisez l'instruction ALTER TRIGGER avec la clause COMPILE, comme indiqué dans l'exemple suivant.

ALTER TRIGGER NEW_EVALUATION_TRIGGER COMPILE;

Voir aussi : Référence du langage PL/SQL d'Oracle Database pour plus d'informations sur la compilation des déclencheurs et les dépendances