我要在修改密码的时候触发一个更新表字段里的时间。。就是把修改密码的时间更新为当前时间。。触发器的代码如下:
create or replace trigger eosoperator_stamp
  before insert or update of updatetime on eosoperator  
  for each rowbegin
  :new.updatetime := sysdate;
end eosoperator_stamp;那个before应该是after吧。。可是改成after后出错:说ORA-04084:cannot change NEW values for this trigger type 各位大虾这是什么错啊如果是before就没错。但是触发器不管用啊。。请大虾指点一二啊。。

解决方案 »

  1.   

    都更新完毕了你还对:new.updatetime进行赋值?
      

  2.   

    应该是我在前台进行密码修改后触发这个触发器给new.updatetime赋值
      

  3.   

    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 rowbegin
      :new.updatetime := sysdate;
    end eosoperator_stamp;