以下のように表示されます。
(日本語)
ORA-04098: トリガー'XXX'が無効で再検証に失敗しました
(英語)
ORA-04098: trigger 'XXX' is invalid and failed re-validation
発生パターン
このエラーは以下のような場合に発生します。
- データをINSERTやUPDATEしたときに、テーブルに設定されているトリガーが無効になっている
- エラー例
- SQL> INSERT INTO testtbl VALUE('hoge', 'fuga'); INSERT INTO testtbl VALUE('hoge', 'fuga'); * 行1でエラーが発生しました。: ORA-04098: トリガー'TESTTBL.TRIG'が無効で再検証に失敗しました。
testtblテーブルにトリガーが設定されていて、INSERTされたのでトリガーを実行しようとしたがトリガーが無効になっているためにエラーになっているというパターンです。
対処法
- トリガーを再作成する(CREATE OR REPLACE TRIGGERコマンド)
- トリガーが無効になっていれば、有効にする
- トリガーが不要であれば、トリガーを削除してしまう
備考
- トリガーの再作成はCREATE OR REPLACE TRIGGERで再作成できます。構文は、以下サイトをご覧ください
→ オラクルちょこっとリファレンス「トリガー編」(外部サイト) - トリガーの有効化、無効化は以下記事を御覧ください。
→ [ORACLE] トリガーを有効/無効にする