DB2 на iSeries немного отличается от DB2 от других платформ, но, как я уже сказал, это может не иметь значения.
Вот мои следующие триггеры (которые работают) (Одно из отличий заключается в использовании '/' vs '.' В зависимости от того, какой инструмент используется для создания запроса)
create trigger utbachInsert after insert on CO99PR/UTBACH
referencing new as n
for each row mode db2sql
begin atomic
insert into CO99PRH/UTBACH values(
n.BCGRP, n.BCID,n.BCSTAT,n.BCDESC,n.YYRGDT,
n.MMRGDT,n.DDRGDT,n.YY1EDT,n.MM1EDT,n.DD1EDT,
n.YYBLDT,n.MMBLDT,n.DDBLDT,n.YYPSDT,n.MMPSDT,
n.DDPSDT,n.YYPGDT,n.MMPGDT,n.DDPGDT,n.BCCOMM,
n.BCUSER,n.YYDATE,n.MMDATE,n.DDDATE
);
end
create trigger utbachUpdate after update on CO99PR/UTBACH
referencing new as n
for each row mode db2sql
begin atomic
update CO99PRH/UTBACH set
BCGRP = n.BCGRP,
BCID = n.BCID,
BCSTAT = n.BCSTAT,
BCDESC = n.BCDESC,
YYRGDT = n.YYRGDT,
MMRGDT = n.MMRGDT,
DDRGDT = n.DDRGDT,
YY1EDT = n.YY1EDT,
MM1EDT = n.MM1EDT,
DD1EDT = n.DD1EDT,
YYBLDT = n.YYBLDT,
MMBLDT = n.MMBLDT,
DDBLDT = n.DDBLDT,
YYPSDT = n.YYPSDT,
MMPSDT = n.MMPSDT,
DDPSDT = n.DDPSDT,
YYPGDT = n.YYPGDT,
MMPGDT = n.MMPGDT,
DDPGDT = n.DDPGDT,
BCCOMM = n.BCCOMM,
BCUSER = n.BCUSER,
YYDATE = n.YYDATE,
MMDATE = n.MMDATE,
DDDATE = n.DDDATE;
end
Просто в вышеприведенных блоках мне нужно много печатать, я уверен, что использовал оператор SELECT для получения записей, которые мне нужны для другого триггера вставки, и поскольку это был оператор SELECT, я мог использовать table1. * (присоединился к другому столу). Поскольку n ссылается на старую строку, я надеялся, что смогу сказать n. * Или что-то в этом роде.
Мне нужно будет сделать это во многих местах, если вы знаете, что это невозможно, я с радостью приму это в качестве ответа.
PS : Иногда полезно иметь контекст, я делаю это для набора таблиц, чтобы синхронизировать их содержимое (в одном направлении). Таблицы используются программами, которые используют доступ на уровне записей (до использования SQL в DB2), и изменение таблиц часто означает перекомпиляцию программ, которые их используют (удаление или добавление строки, добавление ссылочного ограничения и даже добавление триггера). который изменяет данные из такой программы и помещает их в ЖЕ таблицу, как было показано, вызывает проблемы, и системный администратор не хочет перекомпилировать эти программы), поэтому все значения таблиц должны быть скопированы в новые таблицы, эти таблицы могут затем использовать, как мы ожидаем, без особого влияния. Это позволяет в определенной степени отделиться и дает нам некоторую передышку в отношении того, как мы можем управлять схемой.