首页 文章

如何解决Oracle DB触发器错误?

提问于
浏览
0

我编写了一个DB触发器来监视插入操作 . 插入新记录后,我想自动将 CREATION_DATE 设置为 sysdate .

我想插入新记录时出错:

错误ORA-04091:表REPORT正在变异,触发器/函数可能看不到它ORA-06512:在“CREATION_DATE_TEST”,第2行ORA-04088:执行触发器'CREATION_DATE_TEST'时出错

我的代码:

CREATE OR REPLACE TRIGGER creation_date_test 
 AFTER INSERT ON REPORT FOR EACH ROW 
 BEGIN  
   UPDATE REPORT set CREATION_DATE = sysdate
   WHERE ROWID = :new.ROWID;
 END;

我还尝试用 PROJECT_ID = new.PROJECT_ID 替换 ROWID = :new.ROWID . 它会抛出同样的错误 .

1 回答

  • 3

    听起来你只是想要一个设置 :new.creation_date 的插入前触发器

    create or replace trigger creation_date_test
      before insert on report
      for each row
    begin
      :new.creation_date := sysdate;
    end;
    

相关问题