CREATE OR REPLACE TRIGGER TRIG_PT_V_ATSRROSS_UPDATE 
 INSTEAD OF UPDATE ON PT_V_ATSRROSS 
 FOR EACH ROW 
 BEGIN 
   IF :new.BDNTSH<>:old.BDNTSH or :new.CMMNR<>:old.CMMNR or :new.CNRLSTNB<>:old.CNRLSTNB or :new.CRSSNB<>:old.CRSSNB or :new.FRMD<>:old.FRMD or :new.OPIN<>:old.OPIN or :new.STAD<>:old.STAD or :new.WRSS<>:old.WRSS or :new.USPW<>:old.USPW or :new.RM<>:old.RM or :new.DVTYP<>:old.DVTYP THEN 
      UPDATE PT_ATSRROSS 
             SET BDNTSH=:new.BDNTSH, CMMNR=:new.CMMNR, CNRLSTNB=:new.CNRLSTNB, CRSSNB=:new.CRSSNB, FRMD=:new.FRMD, OPIN=:new.OPIN, STAD=:new.STAD, WRSS=:new.WRSS, USPW=:new.USPW, RM=:new.RM, DVTYP=:new.DVTYP
             WHERE INFNDT=:old.INFNDT and ENNMCD=:old.ENNMCD and CNSTNM=:old.CNSTNM;
   END IF; 
 EXCEPTION WHEN OTHERS THEN 
  ROLLBACK;
 END  TRIG_PT_V_ATSRROSS_UPDATE ; 
 /

解决方案 »

  1.   

    如果老的值为空,新的值非空,则"新值<>老值"的结果是FALSE,而原设计的期望是比较结果为TRUE。
      

  2.   

    经过仔细检查,是字段的映射有点问题,还有就是bobfang空值也忽略了,谢谢关注!
      

  3.   

    ......
    EXCEPTION WHEN OTHERS THEN 
      ROLLBACK;----????????????這裡可用?
    ......