Triggerkompilierung und -abhängigkeiten

Kompilierte Trigger hängen von den Schemaobjekten ab, in denen sie definiert werden. Wenn ein Objekt, von dem ein Trigger abhängt, gelöscht oder geändert wird, sodass keine Übereinstimmung zwischen dem Trigger und dem Objekt besteht, wird der Trigger invalidiert.

Wenn Sie eine Anweisung CREATE TRIGGER ausführen, wird der zu erstellende TRIGGER kompiliert. Wenn diese Kompilierung einen Fehler verursacht, verläuft die Anweisung CREATE TRIGGER nicht erfolgreich. Um die Kompilierungsfehler anzuzeigen, verwenden Sie die folgende Anweisung:

SELECT * FROM USER_ERRORS WHERE TYPE = 'TRIGGER';

Kompilierte Trigger hängen von den Schemaobjekten ab, in denen sie definiert werden. So hängt beispielsweise der Trigger NEW_EVALUATION_TRIGGER von der Tabelle EVALUATIONS ab.

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

Verwenden Sie die folgende Anweisung, um die Schemaobjekte anzuzeigen, von denen Trigger abhängen:

SELECT * FROM ALL_DEPENDENCIES WHERE TYPE = 'TRIGGER';

Wenn ein Objekt, von dem ein Trigger abhängt, gelöscht oder geändert wird, so dass eine Übereinstimmung zwischen dem Trigger und dem Objekt besteht, wird der Trigger invalidiert. Beim nächsten Auslösen des Triggers wird er erneut kompiliert. Um einen TRIGGER sofort neu zu kompilieren, verwenden Sie die ALTER TRIGGER-Anweisung mit der COMPILE-Klausel, wie im folgenden Beispiel gezeigt.

ALTER TRIGGER NEW_EVALUATION_TRIGGER COMPILE;

Siehe auch: Oracle Database PL/SQL Language Reference für weitere Informationen zur Triggerkompilierung und zu Abhängigkeiten