DB2 sql相当新,所以请原谅我的无知:) 我有一个内部条件的触发器。我想根据条件插入一些参数。这是:
我查看了DB2文档的触发器以及if语句,至少在我看来它似乎符合它,但是我在插入行上得到了-104错误(非法符号标记)。
如果我使用的值不是来自'N',那么插入工作正常。
好吧,如果我在if then语句中没有任何内容,它会起作用..但只有我什么都没有!
由于
答案 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