FirebirdSQL logo

Триггеры

Триггер является программой, которая хранится в области метаданных базы данных и выполняется на стороне сервера.Напрямую обращение к триггеру невозможно.Он вызывается автоматически при наступлении одного или нескольких событий, относящихся к одной конкретной таблице (к представлению), или при наступлении одного из событий базы данных.

Триггер, вызываемый при наступлении события таблицы, связан с одной таблицей или представлением, с одним или более событиями для этой таблицы или представления (INSERT, UPDATE, DELETE) и ровно с одной фазой такого события (BEFORE или AFTER).

Триггер выполняется в той транзакции, в контексте которой выполнялась программа, вызвавшая соответствующее событие.Исключением являются триггеры, реагирующие на события базы данных.Для некоторых из них запускается транзакция по умолчанию.

Порядок срабатывания

Для каждой комбинации фаза-событие может быть определено более одного триггера.Порядок, в котором они выполняются, может быть указан явно с помощью дополнительного аргумента POSITION в определении триггера.Максимальная позиция равна 32767.Триггеры с меньшей позицией вызываются первыми.

Если предложение POSITION опущено или несколько триггеров с одинаковыми фазой и событием имеют одну и ту же позицию, то такие триггеры будут выполняться в алфавитном порядке их имен.