關於觸發程式編譯和相依性

已編譯的觸發程式與定義它們的綱要物件有相依關係。如果觸發器相依的物件被刪除或變更,使觸發器與物件之間不相符,則觸發器會失效。

執行 CREATE TRIGGER 敘述句會編譯要建立的觸發條件。如果此編譯導致錯誤,則 CREATE TRIGGER 敘述句會失敗。如果要查看編譯錯誤,請使用此敘述句:

SELECT * FROM USER_ERRORS WHERE TYPE = 'TRIGGER';

已編譯的觸發程式與定義它們的綱要物件有相依關係。例如,NEW_EVALUATION_TRIGGER 取決於 EVALUATIONS 表:

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

若要查看觸發器相依的結構物件,請使用此陳述式:

SELECT * FROM ALL_DEPENDENCIES WHERE TYPE = 'TRIGGER';

如果觸發器相依的物件被刪除或變更,使觸發器與物件之間不相符,則觸發器會失效。當下次呼叫觸發程式時,就會重新編譯。若要立即重新編譯觸發器,請使用 ALTER TRIGGER 陳述式搭配 COMPILE 子句。舉例而言:

ALTER TRIGGER NEW_EVALUATION_TRIGGER COMPILE;

另請參閱:Oracle AI Database PL/SQL Language Reference,瞭解有關觸發編譯和相依性的詳細資訊