Создание триггеров

Создание триггеров

Триггер определяется с помощью оператора CREATE TRIGGER, который состоит из заголовка и тела. Заголовок триггера отличается от заголовка хранимой процедуры, он содержит:

* имя триггера, которое должно быть уникальным в базе данных;

* имя таблицы, идентифицирующее таблицу, с которой ассоциируется триггер;

* атрибуты, которые определяют состояние, фазу, событие DML и, необязательно, последовательность.

Тело триггера, как и тело хранимой процедуры, содержит:

* необязательный список локальных переменных и их типов данных;

* блок операторов на языке процедур и триггеров Firebird, заключенный в операторные скобки BEGIN и END. Эти операторы выполняются, когда запускается триггер. Сам блок может включать другие блоки, так что может существовать много уровней вложенности.

Синтаксис

Для всех версий Firebird синтаксис CREATE TRIGGER одинаков:

CREATE TRIGGER имя FOR {таблица | просмотр}

[ACTIVE | INACTIVE]

{BEFORE | AFTER} {DELETE | INSERT | UPDATE}

[POSITION число]

AS <тело-триггера> ^

<тело-триггера> = [<список-объявления-переменных>] <блок>

<список-объявления-переменных> = DECLARE VARIABLE переменная тип-данных;

[DECLARE [VARIABLE] переменная тип-данных; ...]

<блок> =

BEGIN

<составной-оператор> [<составной-оператор> ...]

END

<составной-оператор> = <блок> | оператор;

В версии 1.5 возможно слияние всех событий в один триггер фазы:

CREATE TRIGGER имя FOR {таблица | просмотр}

[ACTIVE | INACTIVE]

{BEFORE | AFTER}

{DELETE OR {[INSERT [OR UPDATE]} | {INSERT OR [. . ]} | {UPDATE OR [..]}}

[POSITION число]

AS <тело-триггера> ^