插入条件后的Oracle触发器

时间:2015-06-05 14:51:55

标签: sql oracle triggers conditional-statements insert-into

我是PL / SQL编程的新手,我一直在创建一个简单的触发器;见下面的代码:

CREATE OR REPLACE TRIGGER  TRG_ACCT_IDW   
AFTER INSERT   
ON ACNTGROUPS  
FOR EACH ROW   
BEGIN   
INSERT INTO IDWORKS_HC   
(ACCOUNT,IDW_CATEGORYNO,GRTYPE)   
VALUES   
(:NEW.ACCOUNT,:NEW.GROUP_,:NEW.TYPE)   
WHERE ACNTGROUPS.TYPE = '1'  
END;

没有where子句,一切都很好。 'after insert'触发器是否有条件子句?上面的代码需要重新格式化吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

在你的情况下,你需要这样的东西

CREATE OR REPLACE TRIGGER  TRG_ACCT_IDW   
AFTER INSERT   
ON ACNTGROUPS  
FOR EACH ROW   
BEGIN   
    IF :NEW.TYPE = '1' then
        INSERT INTO IDWORKS_HC   
        (ACCOUNT,IDW_CATEGORYNO,GRTYPE)   
        VALUES   
        (:NEW.ACCOUNT,:NEW.GROUP_,:NEW.TYPE); 
    END IF;
END;

答案 1 :(得分:1)

使用WHEN condition将是最干净的解决方案。

CREATE OR REPLACE TRIGGER TRG_ACCT_IDW
    AFTER INSERT
    ON ACNTGROUPS
    FOR EACH ROW
    WHEN (NEW.TYPE = '1')
BEGIN   
    INSERT INTO IDWORKS_HC   
    (ACCOUNT,IDW_CATEGORYNO,GRTYPE)   
    VALUES   
    (:NEW.ACCOUNT,:NEW.GROUP_,:NEW.TYPE); 
END;

请勿在{{1​​}}条件中的相关名NEWOLDPARENT之前放置冒号(:)。