[解決済み] Oracle Trigger ORA-04098: トリガーが無効で、再バリデーションに失敗しました。
質問
私は、Oracle 10gデータベースで簡単なトリガーを作成しようとしています。このトリガーを作成するスクリプトは、きれいに実行されます。
CREATE OR REPLACE TRIGGER newAlert
AFTER INSERT OR UPDATE ON Alerts
BEGIN
INSERT INTO Users (userID, firstName, lastName, password) VALUES ('how', 'im', 'testing', 'this trigger')
END;
/
でも、実行すると
INSERT INTO Alerts(observationID, dateSent, message, dateViewed) VALUES (3, CURRENT_TIMESTAMP, 'Alert: You have exceeded the Max Threshold', NULL);
を実行してトリガーを有効にしようとすると、次のようなエラーメッセージが表示されます。
ORA-04098: トリガー 'JMD.NEWALERT' は無効で、再バリデーションに失敗しました。 (0行に影響)
何が原因でこのエラーが発生するのか理解できません。このエラーの原因は何なのかご存知ですか?または、なぜこのようなことが起こるのでしょうか?
よろしくお願いします。
-デービッド
解決方法は?
Oracleは、参照された無効なオブジェクトを再コンパイルしようとします。ここでは、トリガが無効であり、行を挿入しようとするたびにトリガの再コンパイルを試み、失敗し、ORA-04098エラーになります。
あなたは
select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT'
をクリックすると、トリガーが実際にどのようなエラーを取得し、なぜコンパイルできないのかを見ることができます。このケースでは
insert
という行があります。
INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger')
だから作ってください。
CREATE OR REPLACE TRIGGER newAlert
AFTER INSERT OR UPDATE ON Alerts
BEGIN
INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger');
END;
/
もし、これを実行したときにコンパイルの警告が表示された場合は
show errors
SQL*Plus や SQL Developer を使用している場合、またはクエリ
user_errors
をもう一度。
もちろん、これはあなたの
Users
テーブルにはこれらのカラム名があり、それらはすべて
varchar2
しかし、おそらくあなたはトリガーでもっと面白いことをするつもりでしょう。
関連
-
[解決済み] テーブルのFROM句の項目がない [終了しました] 。
-
[解決済み】オペランド型の衝突:intはdateと互換性がない + INSERT文はFOREIGN KEY制約と衝突した
-
[解決済み] バックエンドバージョンでは、データベースのダイアグラムやテーブルのデザインはサポートされていません。
-
[解決済み] テスト
-
[解決済み】SQL Serverは「集約関数やサブクエリを含む式に対して集約関数を実行できない」が、Sybaseはできる。
-
[解決済み] SQLクエリ「00904. 00000 - "%s: 無効な識別子".
-
[解決済み] アンピボットの主キーを含む対象コードページで、テキストが切り捨てられたか、1つ以上の文字が一致しない。
-
[解決済み] Presto SQL ピボッティング(言葉は悪いですが)データ
-
[解決済み] SQLエラーです。ORA-00922: オプションがないか無効です。
-
[解決済み] Presto の JSON_EXTRACT で ' ' 文字を含むキーに問題がある。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】オペランド型の衝突:intはdateと互換性がない + INSERT文はFOREIGN KEY制約と衝突した
-
[解決済み] バックエンドバージョンでは、データベースのダイアグラムやテーブルのデザインはサポートされていません。
-
[解決済み】使用されるSELECT文は列の数が異なる(REDUX!)
-
[解決済み】Athena: スケールファクターでリソースを使い果たすクエリ
-
[解決済み】ORA-01791: SELECTされた式ではない
-
[解決済み] リンクされたサーバーの NULL に対して OLE DB プロバイダー Microsoft.Jet.OLEDB.4.0 のインスタンスを作成できません。
-
[解決済み] Presto SQL ピボッティング(言葉は悪いですが)データ
-
[解決済み] ORA-00920: 無効な関係演算子
-
[解決済み] 検索エラー ORA-00932: 不整合なデータ型: 期待された DATE は NUMBER になりました。
-
[解決済み] マルチパート識別子をバインドできなかった