Существует 6 транзакционных триггеров на уровне блока для обработки записей:
PRE – DELETE – срабатывает перед каждой операцией деления;
POST – DELETE – после удаления;
PRE – INSERT – перед вставкой новой строки;
POST – INSERT – после вставки;
PRE – UPDATE – перед каждым обновлением;
POST – DELETE – после обновления.
Триггеры срабатывают для каждой строки. Жизненный цикл обновления показан на рисунке 2.7.
Рис. 2.7. Жизненный цикл обновления
Пример
Последняя проверка перед удалением
PRE_DELETE триггер в блоке Customer формы Customers препятствует удалению строки о покупателе, если существуют его заказы в S_ord.
SELECT 'anything' INTO : global.dummy
FROM S_ord
WHERE customer_id = : customer.id;
- - Если строки найдены, значит есть заказы.
MESSAGE form_trigger_failure;
EXCEPTION
WHEN no_data_fount THEN NULL;
Присвоение порядковых номеров с использованием триггера PRE_INSERT показано на рисунке 2.8.
Рис. 2.8. Проверка порядковых номеров
Здесь PRE – INSERT триггер блока Order определяет элемент Order_id из последовательности, который будет записываться в столбец ID при вставке строки. |