1

Derby データベースの更新トリガーを作成しようとしています。トリガーは、ODS_CNTRL テーブルに変更が加えられたり、新しいレコードが追加されたりするたびに、ODS_CNTRL_AUDIT テーブルを更新する必要があります。(これはオラクルにあります)

これまでのところ、

            create trigger Update_Audit
            after update 
               on ODS_CNTRL
            for each row MODE DB2SQL
            insert into ODS_CNTRL_AUDIT
            (
            ODS_LOAD_ID, ODS_STATUS, USR_WWID, USR_FIRST_NM, 
            USR_LAST_NM, USR_DISPLAY_NM, USR_NT_ID,TOT_AMT
            )
            values
            (
            ODS_CNTRL.ODS_LOAD_ID, ODS_CNTRL.ODS_STATUS, ODS_CNTRL.USR_WWID, ODS_CNTRL.USR_FIRST_NM, 
            ODS_CNTRL.USR_LAST_NM, ODS_CNTRL.USR_DISPLAY_NM, ODS_CNTRL.USR_NT_ID, ODS_CNTRL.TOT_AMT, 
            T
            );

しかし、このコードは実行されません。エラーが表示されます -

  "Error code -1, SQL state 42X04: Column 'ODS_CNTRL.ODS_LOAD_ID' is either not in any     table in the FROM list or appears within a join specification and is outside the scope of the join specification or appears in a HAVING clause and is not in the GROUP BY list. If this is a CREATE or ALTER TABLE  statement then 'ODS_CNTRL.ODS_LOAD_ID' is not a column in the target table."

For コマンドを追加する必要がありますか? このトリガーが正しく機能するには、どのような編集を行う必要がありますか? すべての値は、ODS_CONTROL テーブルの列です。

4

2 に答える 2

0

ここで説明されているように、REFERENCING 句を使用してみてください: http://db.apache.org/derby/docs/10.9/ref/rrefsqlj43125.html

于 2013-02-25T19:33:40.700 に答える