应该这样,值已经改变了,用new的UPDATE T_EMP_CDE SET NC_STATUS='0',NC_OPR_STATUS='0' WHERE C_EMP_CDE = TRIM(v_new_emp_cde);

解决方案 »

  1.   

    CREATE OR REPLACE TRIGGER TRI$_T_EMP_CDE_CHANGEDEP
    BEFORE UPDATE of c_dpt_cde ON T_EMP_CDE FOR EACH ROW
    DECLARE
        v_emp_cde VARCHAR2(10);
    BEGIN
        IF UPDATING THEN
    IF (:NEW.C_DPT_CDE != :OLD.C_DPT_CDE)
      or(:OLD.C_DPT_CDE is null and :NEW.C_DPT_CDE is not null)
      or(:OLD.C_DPT_CDE is not null and :NEW.C_DPT_CDE is null) THEN
        :NEW.NC_STATUS:=0;
        :NEW.NC_OPR_STATUS=0;
    END IF;
        END IF;
    END;
      

  2.   

    谢谢关注,还是不行,执行update语句后值还是没有改变。
    我尝试把Before改称After,也不行。
      

  3.   

    楼上的兄弟,bobfang(匆匆过客) ( ) 
    CREATE OR REPLACE TRIGGER TRI$_T_EMP_CDE_CHANGEDEP
    BEFORE UPDATE of c_dpt_cde ON T_EMP_CDE FOR EACH ROW
    DECLARE
        v_emp_cde VARCHAR2(10);
    BEGIN
        IF UPDATING THEN
      IF (:NEW.C_DPT_CDE != :OLD.C_DPT_CDE)
        or(:OLD.C_DPT_CDE is null and :NEW.C_DPT_CDE is not null)
        or(:OLD.C_DPT_CDE is not null and :NEW.C_DPT_CDE is null) THEN
        :NEW.NC_STATUS:='0';
        :NEW.NC_OPR_STATUS='0';
    END IF;
        END IF;
    END;你的触发器:NEW.NC_STATUS:='0';
     :NEW.NC_OPR_STATUS='0';这块编译不过去,如果只写一句可以编译过去,而且是正确的,怎样把这两句连接起来?
      

  4.   

    要在触发器中修改自身表(在表a上修改a的列)用:new.anc :=???就可以了