В Informix мне нужно обновить 2 (две) таблицы при запуске триггера. Давайте скажем Таблица_A и Таблица_B. В Table_A в качестве первичного ключа используется столбец int8 (длинный тип данных). Когда вставляется новая запись, этот столбец первичного ключа будет извлекать значение из последовательности. Это код:
sequence_A.nextVal
В Table_B есть столбец внешнего ключа, который ссылается на первичный ключ в Table_A. Чтобы подсчитать первичный ключ и внешний ключ, я использую sequence_A.currVal
для вставки значения в этот столбец внешнего ключа.
Я попробовал приведенный ниже код, но Informix выдает синтаксическую ошибку.
create trigger The_Trigger
insert on The_Table referencing new as n
for each row
(
insert into Table_A(...) value(sequence_A.nextVal, ...)
insert into Table_B(...) value(sequence_A.currVal, ...)
)
Если я разделю оператор вставки на 2 (два) разностных триггера, это сработает. Таким образом, я думал создать 2 (два) триггера на The_Table. Допустим, Trigger_A и Trigger_B, могу ли я знать, как я могу гарантировать, что Trigger_A будет выполняться сначала, а затем только Thrigger_B. Могу ли я указать выполнение заказа на триггерах? Можно ли это сделать? И как?