Triggers DB2触发器非法令牌

Triggers DB2触发器非法令牌,triggers,db2,Triggers,Db2,对于DB2 sql来说相当陌生,所以请原谅我的无知: 我有一个触发器,里面有一个条件。然后,我想根据条件插入一些参数。。这是: 我已经查看了DB2文档中的触发器和if语句,至少在我看来它似乎符合它,但是我在插入行中得到了一个-104错误非法符号标记 如果我使用的值不是来自“N”,则插入可以正常工作 好的,如果if-then语句中没有任何内容,它就会起作用。。但前提是我什么都没有 谢谢我的猜测是DB2被您的语句终止符弄糊涂了。使用分号终止CREATE TRIGGER语句,但同时在INSERT之后的

对于DB2 sql来说相当陌生,所以请原谅我的无知: 我有一个触发器,里面有一个条件。然后,我想根据条件插入一些参数。。这是:

我已经查看了DB2文档中的触发器和if语句,至少在我看来它似乎符合它,但是我在插入行中得到了一个-104错误非法符号标记

如果我使用的值不是来自“N”,则插入可以正常工作

好的,如果if-then语句中没有任何内容,它就会起作用。。但前提是我什么都没有


谢谢

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

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

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

db2 -td@ -f mytrig.sql

DB2的哪个版本?就我而言,我倾向于在一个语句中这样做,类似于INSERT INTO DEPO SELECT。。。从sysibm.sysdummy1(不存在)中,从DEPO中选择1,它的好处是处于工作单元之一,因此您不必担心事务。如果没有代码,您的问题将毫无用处,因此您不妨将其全部删除。
db2 -td@ -f mytrig.sql