2016-07-28 9 views
-1

THIS_TABLEへの挿入または更新があるたびに、THAT_TABLEに挿入をトリガーする次のトリガーがあります。DB2トリガー・エラー

次のクエリは、そのように動作します。同様に、それは私が行-Aをコメントし、コメントを外して(そしてorを)行-Bを取り除くと動作します。

予期しないトークン「OR INSERTは」「」次がわかった。私は両方の行のコメントを解除するとき

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を実行しています

+1

何が不足していますか?あなたのDB2のバージョンとプラットフォーム。 – mustaccio

答えて

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 
    @ 
+0

は、最後に意図的に '@'か誤植ですか? – user6401178

+0

2つのターミネータが必要です ";"トリガーコード内のものであり、私は第2(外側)として "@"を使用しました。このTermoinatorは、ValidationタブのDataStudio、またはdb2 -td @ ... – MichaelTiefenbacher

+0

のコマンドラインから指定することができます。エラーが発生しましたが、&witout '@'で試してみました。今回は特定のエラーコードを取得していない、「最後のステートメントを実行するときにエラーが発生しました」というメッセージが表示され、続行するかどうか尋ねるウィンドウが表示されます。 – user6401178