加上括号
FOR EACH ROW (WHEN state = 1)

解决方案 »

  1.   

    to maohaisheng:
    这是我第一次写ORACLE和TRIGGER,就遇到了这个问题,
    我按你的说法试过,还是不行 :(SQL> CREATE TRIGGER sms_smt_deal_date
      2  AFTER UPDATE OF state on sms_smt
      3  FOR EACH ROW WHEN (state = 1)
      4  begin
      5  update sms_smt set deal_date = to_date(sysdate,'yyyy/mm/dd:hh24:mi:ss') ;
      6  END
      7  ;
      8  /
    FOR EACH ROW WHEN (state = 1)
                       *
    ERROR at line 3:
    ORA-04076: invalid NEW or OLD specification
      

  2.   

    指明是new还是oldFOR EACH ROW WHEN (old.state = 1)
      

  3.   

    应该是new
    FOR EACH ROW WHEN (new.state = 1)
      

  4.   

    真心感谢maohaisheng解我的困惑, 好人有好报,
    再次谢谢!
      

  5.   

    create procedure update_date
    as
    begin
    update sms_smt set deal_date =sysdate;
    end;
    /CREATE TRIGGER sms_smt_deal_date                                         
    AFTER UPDATE OF state on sms_smt
    FOR EACH ROW 
    WHEN state = 1
    begin
    update_date;
    END;
    /