DB2触发器错误

DB2触发器错误,db2,db2-luw,Db2,Db2 Luw,我有一个触发器,每当插入或更新该表时,它就会触发该表的插入 以下查询按其应有的方式工作。同样——当我注释行A并取消注释(并删除或中的行B时,它也会起作用 create or replace trigger t99 after update -- line-A --or insert -- line-B on THIS_TABLE REFERENCING new as newRow for each row MODE DB2SQL

我有一个触发器,每当插入或更新
该表时,它就会触发该表的插入

以下查询按其应有的方式工作。同样——当我注释行A并取消注释(并删除
中的行B时,它也会起作用

    create or replace trigger t99 
    after  
    update -- line-A
    --or insert -- line-B
    on THIS_TABLE
    REFERENCING new as newRow
    for each row MODE DB2SQL
    insert into THAT_TABLE
        values  (newRow.tnumber, 'O', newRow.cocode, CURRENT TIMESTAMP, null, null)
但是,当我取消注释这两行时,会出现以下错误:

在“”之后发现意外的标记“或插入”。预期的令牌可能包括:“”。。SQLCODE=-104,SQLSTATE=42601,DRIVER=4.21.29

少了什么


我正在Windows 10上运行DB2 9.1

尝试将语句封装在一个BIGIN END块中,如我的示例所示:

create table test.triggerevent (id int, text varchar(50))@
create table test.log (id int, text varchar(50), ts timestamp)@

create or replace trigger tlog
   after update or insert 
   on test.triggerevent
   referencing new as newRow
   for each row mode db2sql
   begin
     insert into test.log values (newRow.ID, newRow.text, current timestamp);
   end
   @

少了什么?首先,您的DB2版本和平台。末尾的“@”是故意的还是输入错误?您必须有两个终止符“;”是触发器代码中的一个,我使用“@”作为第二个(外部)终止符。您可以在“验证”选项卡上的DataStudio中指定此术语,也可以通过命令行使用db2-td@…我仍然遇到错误--使用&witout
@
进行了尝试。但是这次没有得到一个特定的错误代码,一路上弹出一个窗口说“在执行最后一个语句时发生了一个错误”,询问我是否继续。我在EclipseDataStudio上执行这些操作正在使用Eclipse。预先尝试以下语句(并使用@)--