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

如何解决Oracle DB触发器错误?,oracle,plsql,triggers,database-trigger,Oracle,Plsql,Triggers,Database Trigger,我编写了一个DB触发器来监视插入操作。插入新记录后,我想自动将CREATION\u DATE设置为sysdate 我想插入新记录时出错: 错误 ORA-04091:表格报告正在变异,触发器/函数可能不存在 看到了吗 ORA-06512:在“创建日期测试”第2行 ORA-04088:执行触发器“创建日期测试”时出错 我的代码: CREATE OR REPLACE TRIGGER creation_date_test AFTER INSERT ON REPORT FOR EACH ROW

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

我想插入新记录时出错:

错误
ORA-04091:表格报告正在变异,触发器/函数可能不存在 看到了吗
ORA-06512:在“创建日期测试”第2行
ORA-04088:执行触发器“创建日期测试”时出错

我的代码:

 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\u ID=new.PROJECT\u ID
。它会抛出相同的错误。

听起来您只是想要一个设置
:new.creation\u date

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

听起来您只需要一个设置
:new.creation\u date

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

非常感谢!你的回答真的很有帮助@deli-是
creation\u date
a
varchar2
而不是名称所暗示的
date
?我不希望在我发布的代码中使用任何字符串。我现在已经更改了数据类型。谢谢非常感谢!你的回答真的很有帮助@deli-是
creation\u date
a
varchar2
而不是名称所暗示的
date
?我不希望在我发布的代码中使用任何字符串。我现在已经更改了数据类型。谢谢