DB2触发器错误

时间:2016-07-28 19:15:20

标签: db2 db2-luw

我有以下触发器,只要有THAT_TABLE的插入或更新,就会在THIS_TABLE上触发插入。

以下查询的工作方式与其应有的方式相同。同样 - 当我评论 line-A 并取消注释(并删除or in) line-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)

但是,当我取消注释两行时,我收到以下错误:

  

意外的令牌" OR INSERT"发现在""之后。预期的令牌可能包括:"" .. SQLCODE = -104,SQLSTATE = 42601,DRIVER = 4.21.29

缺少什么?

我在Windows 10上运行DB2 9.1

1 个答案:

答案 0 :(得分: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
   @