2

テーブル A にデータを挿入しているときに ORA-04091 エラーが発生します。テーブル A のレコードは、同じテーブル内の他のレコードを 1:N で参照しています。親レコードには fk_id = null があり、子レコードには fk not null があります。

create or replace trigger TRBI_A 
BEFORE INSERT ON A
for each row
BEGIN
  IF :new.fk_id IS NOT NULL then
     UPDATE A SET actualTS = CURRENT_TIMESTAMP WHERE id = :new.fk_id;
  END IF;
END;

ORA-04091: 表名が変更されています。トリガー/関数が参照できない可能性があります

この問題は、トリガーを起動したステートメントによって現在変更されているテーブルを変更またはクエリしようとしたトリガーが原因である可能性があります。トリガーを修正して正しくする方法を知っている人はいますか?

4

1 に答える 1

2

問題が何であるかを知っているので、コードを少し読んでください。トリガーを配置している同じテーブルを更新します。

あなたの場合:NEW.actualTS:=current_timestamp、 update ステートメントを使用せずに、単に置く必要があると思います。

于 2013-01-21T15:07:35.730 に答える