CREATE TRIGGER

Версии сервера

0.91.01.5.31.5.41.5.52.02.0.32.0.42.12.53.0
ДаДаДаДаДаДаДаДаДа??

Доступно в

DSQL ESQL

Формат

Для версии 1.5 и выше:
CREATE TRIGGER name FOR {table | view}
   [ACTIVE | INACTIVE]
   {BEFORE | AFTER} <action_list>
   [POSITION number]
   AS
   <trigger_body>

<action_list>  ::=  <action> [OR <action> [OR <action>]]
<action>       ::=  INSERT | UPDATE | DELETE

Для версий ниже 1.5:
CREATE TRIGGER name FOR {table | view}
   [ACTIVE | INACTIVE]
   {BEFORE | AFTER} {INSERT | UPDATE | DELETE}
   [POSITION number]
   AS
   <trigger_body>
АргументОписание
nameИмя создаваемого триггера.
ACTIVEОпределяет, что действие триггера дает эффект, когда тот запускается (по умолчанию).
INACTIVEОпределяет, что действие триггера не дает эффекта.
BEFOREОпределяет, что триггер срабатывает перед ассоциированной операцией.
AFTERОпределяет, что триггер срабатывает после ассоциированной операции.
DELETE, INSERT, UPDATEОпределяет операцию над таблицей, при которой срабатывает триггер.
POSITION numberОпределяет порядок в котором срабатывают триггеры перед или после того же самого действия. number должен быть целым от 0 до 32767. Триггер с меньшим номером срабатывает раньше. Триггеры для того же самого действия, с тем же самым позиционным номером, будут запущены в случайном порядке.
trigger_bodyТело триггера, блок инструкций на языке процедур и триггеров.
terminatorТерминатор, определенный для ISQL командой SET TERM, указывающий на конец тела триггера.

Описание

Создает триггер, то есть блок PSQL кода, который выполняется автоматически перед или после изменения таблицы или отображения.

Пример

Триггер, использующий значения генератора, для значений поля, при вставке записей.

set term !!;
create trigger gen_reader_id_trg for reader before insert
as begin
   new.reader_id = gen_id(gen_reader_id, 1);
end!!
set term ;!!

См. также

ALTER TRIGGER, DROP TRIGGER

Источник

Firebird 2.0 Language Ref. Update

Обсуждение