DB2触发非法令牌

时间:2014-02-13 09:40:43

标签: triggers db2

DB2 sql相当新,所以请原谅我的无知:) 我有一个内部条件的触发器。我想根据条件插入一些参数。这是:

我查看了DB2文档的触发器以及if语句,至少在我看来它似乎符合它,但是我在插入行上得到了-104错误(非法符号标记)。

如果我使用的值不是来自'N',那么插入工作正常。

好吧,如果我在if then语句中没有任何内容,它会起作用..但只有我什么都没有!

由于

1 个答案:

答案 0 :(得分:0)

我的猜测是DB2会被语句终结符弄糊涂。您使用分号来终止CREATE TRIGGER语句,但同时在CREATE TRIGGER语句中INSERT之后使用相同的终止符。

在您用于执行代码的任何客户端中,将语句终止符重新定义为其他内容,并在CREATE TRIGGER之后将该终止符放在END ID的末尾。例如,如果使用命令行处理器,请将其保存到文件trig.sql

 CREATE OR REPLACE TRIGGER AUTO_INSERT_DEPO_NOMINEE
  AFTER INSERT ON CA_ENTITLEMENT 
  REFERENCING NEW AS N
  FOR EACH ROW

  IF  NOT EXISTS (SELECT D.DEPO_CD FROM DEPO D WHERE D.DEPO_CD = N.DEPO_CD)
  THEN    
    INSERT INTO DEPO (DEPO_CD, DEPO_NME, BRANCH_CD, AUTO_GENERATED) 
           VALUES(N.DEPO_CD, NULL, N.BRANCH_CD, 'Y');
  END IF@

然后运行它,指定“@”作为语句终止符:

db2 -td@ -f mytrig.sql