トリガーのコンパイル、無効化および再コンパイル
CREATE
TRIGGER
文は、トリガーをコンパイルし、そのコードをデータベースに格納します。コンパイル・エラーが発生してもトリガーは作成されますが、トリガーを起動する文は、次の場合を除いて失敗します。
-
トリガーが無効な状態で作成された場合。
-
トリガーを起動するイベントが
AFTER
STARTUP
ON
DATABASE
である場合。 -
トリガーを起動するイベントが
AFTER
LOGON
ON
DATABASE
またはAFTER
LOGON
ON
SCHEMA
のいずれかで、ユーザーがSYSTEM
としてログオンしている場合。
トリガーのコンパイル・エラーを表示するには、SQL*PlusまたはEnterprise ManagerでSHOW
ERRORS
コマンドを使用するか、または静的データ・ディクショナリ・ビュー*_ERRORS
を問い合せます(『Oracle Databaseリファレンス』を参照)。
トリガーのコンパイルに失敗すると、その例外ハンドラは実行できません。例は、「リモート例外処理」を参照してください。
トリガーがサブプログラムやパッケージなどの別のオブジェクトを参照している場合、そのオブジェクトが変更または削除されると、トリガーは無効になります。次回トリガーを起動するイベントが発生すると、コンパイラはトリガーの再有効化を試みます(詳細は、『Oracle Database開発ガイド』を参照してください)。
ノート:
メッセージのエンキューにはDBMS_AQ
パッケージが使用されるため、トリガーとキューの間の依存性は維持できません。
トリガーを手動で再コンパイルするには、ALTER
TRIGGER
文を使用します(「ALTER TRIGGER文」を参照)。