トリガーのコンパイルおよび依存について
コンパイルされたトリガーは、トリガーが定義されるスキーマ・オブジェクトに依存します。トリガーが依存するオブジェクトが削除または変更され、トリガーとオブジェクトの不一致が生じた場合、そのトリガーは無効になります。
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言語リファレンス』を参照してください。