我是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'触发器是否有条件子句?上面的代码需要重新格式化吗?提前谢谢。
答案 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}}条件中的相关名NEW
,OLD
或PARENT
之前放置冒号(:)。