トリガーのコンパイルおよび依存について

コンパイルされたトリガーは、トリガーが定義されるスキーマ・オブジェクトに依存します。トリガーが依存するオブジェクトが削除または変更され、トリガーとオブジェクトの不一致が生じた場合、そのトリガーは無効になります。

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';

トリガーとオブジェクトの不一致が生じる場合、そのトリガーとオブジェクトの不一致が生じるように、そのトリガーは無効になります。トリガーが次回起動されるとき、トリガーは再コンパイルされます。トリガーをすぐに再コンパイルするには、次の例に示すように、COMPILE句を含むALTER TRIGGER文を使用します。

ALTER TRIGGER NEW_EVALUATION_TRIGGER COMPILE;

関連項目:トリガーのコンパイルおよび依存性の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。