触发器在oracle中发生错误

时间:2017-10-17 07:02:03

标签: oracle oracle11g triggers

我更新了'002'表中的'MEAIN_STAT_CODE_NO'列时创建了一个触发器。 但是,当我更新时,会发生触发错误。

更新声明

UPDATE TB_REN016_002 A
SET A.MEAIN_STAT_CODE_NO=7003 
WHERE A.CID=11101000001;

触发陈述

CREATE TRIGGER TRI_MEAIN_STAT_EVENT
AFTER 
UPDATE OF MEAIN_STAT_CODE_NO ON TB_REN016_002
FOR EACH ROW
BEGIN
    IF :NEW.MEAIN_STAT_CODE_NO = 7002 THEN 
        IF :OLD.MEAIN_STAT_CODE_NO = 7003 OR :OLD.MEAIN_STAT_CODE_NO = 7004 THEN
            UPDATE TB_REN016_003 U 
                SET MEAIN_STAT_CODE_NO = 3001
            WHERE U.CID=:NEW.CID 
                AND U.MEAIN_EVENT_CODE_NO=4003;
            UPDATE TB_REN016_006 E 
                SET EVENT_STAT_CODE_NO = 20001
            WHERE U.CID=:NEW.CID 
                AND E.EVENT_CODE_NO=4003
                AND E.OCUR_DTM=(SELECT MAX(E2.OCUR_DTM) FROM TB_REN016_006 E2 WHERE E2.CID=:NEW.CID AND E2.EVENT_CODE_NO=4003);     
        END IF;
    END IF;
    IF :NEW.MEAIN_STAT_CODE_NO = 7003 OR NEW.MEAIN_STAT_CODE_NO = 7004 THEN
        UPDATE TB_REN016_003 U 
            SET MEAIN_STAT_CODE_NO = 
                (SELECT A.EVENT_GRD_CODE_NO 
                 FROM TB_REN016_039 A 
                 WHERE EVENT_CODE_NO=4003 
                ) 
        WHERE U.CID=:NEW.CID 
        AND U.MEAIN_EVENT_CODE_NO=4003;  

        INSERT 
            INTO TB_REN016_006 
         ( 
         MEAIN_EVENT_SERI_NO, 
         CID, 
         OCUR_DTM, 
         EVENT_CODE_NO, 
         EVENT_GRD_CODE_NO, 
         EVENT_CTNT, 
         EVENT_FIGR, 
         EVENT_STAT_CODE_NO, 
         EVENT_TRME_STAT_CODE_NO, 
         EVENT_OCUR_CUS 
     ) 
     VALUES 
     ( 
         MEAIN_EVENT_SEQ.nextval, 
         :NEW.CID, 
         SYSDATE,  
         4003, 
         (SELECT A.EVENT_GRD_CODE_NO FROM TB_REN016_039 A WHERE EVENT_CODE_NO=4003 ), 
         (SELECT A.EVENT_OCUR_CUS_EXPL FROM TB_REN016_039 A WHERE EVENT_CODE_NO=4003), 
         -1, 
         20002,  
         21001,  
         (SELECT A.EVENT_DSPO_MTHD_EXPL FROM TB_REN016_039 A WHERE EVENT_CODE_NO=4003 )  
     );

)
    END IF;
END;
/

当列'MEAIN_STAT_CODE_NO'更改为7002时,更新表'TB_REN016_003'和'TB_REN016_006'。如果列'700_'更改为7003或7004,则更新表'TB_REN016_003'并插入表'TB_REN016_006'。

0 个答案:

没有答案