CREATE OR REPLACE TRIGGER  bearing_state_update_trig
before UPDATE OF state  ON  res_bearing 
REFERENCING NEW AS new_res_bearing  OLD AS old_res_bearing 
FOR EACH ROWBEGIN
 
    IF ( :new_res_bearing.state = 99 ) THEN                                   -- 轴承报废
      :new_res_bearing.scrap_date := sysdate;
    END IF;END;
/

解决方案 »

  1.   

    CREATE OR REPLACE TRIGGER  bearing_state_update_trig
    before UPDATE OF state  ON  res_bearing 
    REFERENCING NEW AS new_res_bearing  OLD AS old_res_bearing 
    FOR EACH ROWBEGIN
     
        IF ( :new_res_bearing.state = 99 ) THEN                                   -- 轴承报废
                  :new_res_bearing.state:= 99;
                  :new_res_bearing.scrap_date := sysdate;
           
        END IF;END;
    /
      

  2.   

    二位大虾!
    小弟菜!
    在触发器中不需进行条件判断么?bearing_id字段为表的主关键字?
    能否帮解释一下?
      

  3.   

    不用了,:new记录更新当前数据,具体到那条数据,触发器会做的,不用再次判定.
      

  4.   

    ORA-04084: 无法更改次触发器类型的NEW值
      

  5.   

    IF ( :new_res_bearing.state = 99 ) THEN                 -- 轴承报废
           :new_res_bearing.state      := 99;
           :new_res_bearing.scrap_date := sysdate;    END IF;
    ORA-04084: 无法更改此触发器类型的NEW值
      

  6.   

    before UPDATE OF state  ON  res_bearing 
    修改为:
    before UPDATE ON  res_bearing 
      

  7.   

    To: beckhambobo(beckham) 
    CREATE OR REPLACE TRIGGER  bearing_state_update_trig
    AFTER UPDATE OF state  ON  res_bearing -- 只在state字段发生改变时触发,为什么
                                           -- 去掉OF state  ?? 
    REFERENCING NEW AS new_res_bearing  OLD AS old_res_bearing 
    FOR EACH ROW
    ...
    拜托解释一下?
      

  8.   

    To: beckhambobo(beckham) 
    ORA-04084: 无法更改此触发器类型的NEW值
    出现上述错误!
      

  9.   

    sorry,去掉此句
    :new_res_bearing.state      := 99;
      

  10.   

    To: beckhambobo(beckham) 
    去掉此句:new_res_bearing.state := 99;
    ORA-04084: 无法更改此触发器类型的NEW值
    还是出现上述错误!
      

  11.   

    AFTER UPDATE OF state  改为BEFORE UPDATE OF state
      

  12.   

    To: Lastdrop(空杯) 
    多谢!
      

  13.   

    AFTER UPDATE OF state   是在update后进行触发器操作
    BEFORE UPDATE OF state  是在before之前进行触发器操作主要取觉于用于在update前操作还是update后操作
      

  14.   

    To: txchinali(小虫)
    多谢!