我正在完成下面的任务。
在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;
关于这可能是什么原因的任何想法?
答案 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;