Элементы заголовка

Элементы заголовка

Все, предшествующее предложению AS, является заголовком триггера. Заголовок должен задавать уникальное имя триггера и имя существующей подтвержденной таблицы или просмотра, кому принадлежит триггер.

Именование триггеров

Синтаксис требует, чтобы имя триггера было уникальным среди всех имен триггеров в базе данных. Хорошей практикой является применять некоторые соглашения для именования триггеров, которые имеют смысл для вас и очевидны для всех других, кто будет работать с вашей базой данных. Автор использует "формулу" для идентификации фазы и события (BI | AI | BU | AU | BD | AD | BA | AA - два последних представляют "до всех", Before All и "после всех", After All), имя таблицы и номер в последовательности, если нужно[119]. Например, триггер до добавления для таблицы CUSTOMER может быть назван BI_CUSTOMERI.

CREATE TRIGGER BI CUSTOMERl FOR CUSTOMER...

Атрибуты триггера

Перечислим остальные атрибуты заголовка триггера.

* Состояние триггера, ACTIVE или INACTIVE, определяющее, будет ли триггер запускаться после его создания. Значение по умолчанию ACTIVE. Деактивация триггера полезна при разработке и отладке.

* Индикатор фазы, BEFORE или AFTER, определяющий момент, когда триггер будет выполняться при событии DML.

* Индикатор события DML определяет тип операции SQL, при которой будет выполняться триггер: INSERT, UPDATE или DELETE.

* В Firebird 1.0.x может быть указан индикатор ровно одного события. Начиная с версии 1.5, необязательное расширение <событие> OR <событие> ... позволяет задавать два или три события в одном модуле. Например, ... BEFORE INSERT OR UPDATE OR DELETE ... позволяет вам задать действия для всех трех событий. Логические контекстные переменные INSERTING, UPDATING или DELETING поддерживают логику переходов.

* Необязательный индикатор последовательности, POSITION число, определяет момент запуска триггера по отношению к другим триггерным модулям для той же фазы и события.