select id, status, name , status_change_dt from account;
每当状态更改为任何其他状态时,status_change_dt应更新为sysdate
create or replace
TRIGGER ADD_DT
after UPDATE of status ON account
for each row
BEGIN
:new.status_change_dt := sysdate ;
END;
创建此触发器时遇到错误。先感谢您。
答案 0 :(得分:4)
更新后无法更改新值。
甚至错误也非常清楚:
ORA-04084:无法更改此触发类型的新值
使用BEFORE
代替AFTER
。
试试这个:
create or replace
TRIGGER ADD_DT
before UPDATE of status ON account
for each row
BEGIN
:new.status_change_dt := sysdate ;
END;
如果你有另一张桌子
account_dtl (ref_id references account(id), status_2);
并且帐户表还有一列用于跟踪status_2更改,请使用以下命令:
create or replace
TRIGGER ADD_DT_Status_2
before UPDATE of status_2 ON account_dtl
for each row
BEGIN
update account
set status2_change_dt := sysdate
where id = :new.ref_id;
END;
虽然在自己的表中跟踪status_2更改会更有意义,例如account_dtl