Oracle触发器创建问题

时间:2011-12-11 05:08:32

标签: oracle oracle10g

我正在完成下面的任务。

  

在STAFF表上创建一个名为STAFF_TRIGGER的PL / SQL触发器。这个   每次插入或更新后都会执行触发器。 a。对于插入物,   此触发器应该将新的STAFF.STAFF_ID值,用户放入   MOD_USER,以及MOD_TIMESTAMP中的系统日期来记录创建   将数据导入STAFF_LOG。 b。对于更新,应该放置此触发器   先前的STAFF值进入相应的STAFF_LOG列为   以及记录MOD_USER和MOD_TIMESTAMP。

到目前为止,这就是我所拥有的,我正在使用oracle数据库快递版。

create trigger staff_trigger
after insert or update on staff
for each row 

begin 

if inserting then 
   insert into staff_log (staff_id, mod_user, mod_timestamp)
   values(new.employee_id, new.last_name, sysdate);
end if;

if updating then  
   insert into staff_log (mod_user, mod_timestamp)
   values(new.last_name, sysdate);
end if;

end;

当我执行代码时,我收到以下错误。

ERROR at line 9: PL/SQL: SQL Statement ignored7. if inserting then 
8.    insert into staff_log (staff_id, mod_user, mod_timestamp)
9.    values(new.employee_id, new.last_name, sysdate);
10. end if;

关于这可能是什么原因的任何想法?

1 个答案:

答案 0 :(得分:1)

试试这个(:new代替new

create trigger staff_trigger
after insert or update on staff
for each row 

begin 

if inserting then 
   insert into staff_log (staff_id, mod_user, mod_timestamp)
   values(:new.employee_id, :new.last_name, sysdate);
end if;

if updating then  
   insert into staff_log (mod_user, mod_timestamp)
   values(:new.last_name, sysdate);
end if;

end;