AS400で現在挿入されている行のフィールドを更新しようとしています。私はバージョン4.5,5.3、および7.1を使用しています。AS400の挿入時に更新トリガー
私のテストでは、CRTDTフィールド(NUMERIC 7,0)を含むテーブルWC(Work Center)を作成しました このテーブルに新しいレコードを挿入するとき、このフィールドの値が小さいそれが200,000であればそれに1,000,000を加えます。
私のSQLは次のとおりです。
-- Generate SQL
-- Version: V5R4M0 060210
-- Generated on: 10/13/16 10:03:49
-- Relational Database: S65BEE7B
-- Standards Option: DB2 UDB iSeries
CREATE TRIGGER RAVONLIB.WC_TRIGGER
AFTER INSERT ON RAVONLIB.WC
FOR EACH STATEMENT
MODE DB2SQL
SET OPTION ALWBLK = *ALLREAD ,
ALWCPYDTA = *OPTIMIZE ,
COMMIT = *NONE ,
DECRESULT = (31, 31, 00) ,
DFTRDBCOL = *NONE ,
DYNDFTCOL = *NO ,
DYNUSRPRF = *USER ,
SRTSEQ = *HEX
BEGIN ATOMIC
IF WC.CRTDT<200000 THEN
UPDATE RAVONLIB . WC SET CRTDT = 1000000 + CRTDT ;
END IF;
END ;
私は変数CRTDTが定義されていないか、使用できないというエラーを取得しています。 CRTDTが200000より小さい場合にCRTDTを正しく更新するための正しい構文は何ですか?
このDB2または別のdbmsですか? – jarlh
はいIBM DB2 – ehh
テーブルWCの** After ** Updateトリガーで、テーブルWCへの更新を実行する理由はありますか? – user2338816