關於觸發程式編譯和相依性
已編譯的觸發程式與定義它們的綱要物件有相依關係。如果觸發器相依的物件被刪除或變更,使觸發器與物件之間不相符,則觸發器會失效。
執行 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,瞭解有關觸發編譯和相依性的詳細資訊