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

时间:2016-09-02 04:55:26

标签: oracle plsql triggers database-trigger

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

当我想插入新记录时出现错误:

  

错误
  ORA-04091:表REPORT正在变异,触发/功能可能不变   看到它   ORA-06512:at" 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;

我还尝试将ROWID = :new.ROWID替换为PROJECT_ID = new.PROJECT_ID。它会抛出相同的错误。

1 个答案:

答案 0 :(得分:3)

听起来你只想要一个设置:new.creation_date

的插入前触发器
create or replace trigger creation_date_test
  before insert on report
  for each row
begin
  :new.creation_date := sysdate;
end;