Я пытаюсь обновить поле текущей вставленной строки в AS400. Я использую версии 4.5, 5.3 и 7.1.Update Trigger on Insert in AS400
Для моих тестов я создал таблицу WC (рабочий центр), содержащую поле CRTDT (NUMERIC 7,0) При вставке новой записи в эту таблицу, я хочу проверить, меньше ли значение этого поля что 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?
Является ли это DB2 или другим dbms? – jarlh
Да, это IBM DB2 – ehh
Есть ли причина, по которой вы хотите сделать UPDATE для WC таблицы в ** После ** Обновить триггер на WC таблицы? – user2338816