关于oracle触发器的问题。。大虾进。。在线等。。。
我要在修改密码的时候触发一个更新表字段里的时间。。就是把修改密码的时间更新为当前时间。。触发器的代码如下:
create or replace trigger eosoperator_stamp
before insert or update of updatetime on eosoperator
for each row
begin
:new.updatetime := sysdate;
end eosoperator_stamp;
那个before应该是after吧。。可是改成after后出错:说ORA-04084:cannot change NEW values for this trigger type 各位大虾这是什么错啊。。。如果是before就没错。但是触发器不管用啊。。请大虾指点一二啊。。
------解决方案--------------------1、before insert or update of updatetime on eosoperator
这句话的意思是:当你在插入或更新eosoperator.updatetime字段时,执行触发器。
所以,这一句中的 updatetime 应该替换成你的 密码 字段。
2、那个before应该是after吧。。可是改成after后出错
先假定1、是正确的,如果把before 改成 after,也就表明是在updatetime更新之后,执行 :new.updatetime := sysdate; 而此时,字段updatetime的值已经更新,在更新之后,不能对:new值进行赋值操作。
----------------------------------------
所以,你的触发器应该是这样:
create or replace trigger eosoperator_stamp
before insert or update of 密码字段 on eosoperator
for each row
begin
:new.updatetime := sysdate;
end eosoperator_stamp;