Здесь показаны различия между двумя версиями данной страницы.
Both sides previous revision Предыдущая версия Следущая версия | Предыдущая версия | ||
create_trigger [2008/12/23 19:41] urandom |
create_trigger [2008/12/23 23:17] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== CREATE TRIGGER ====== | ||
+ | ===== Версии сервера ===== | ||
+ | ^ 0.9 ^ 1.0 ^ 1.5.3 ^ 1.5.4 ^ 1.5.5 ^ 2.0 ^ 2.0.3 ^ 2.0.4 ^ 2.1 ^ 2.5 ^ 3.0 ^ | ||
+ | | Да | Да| Да | Да | Да | Да | Да | Да | Да | ? | ? | | ||
+ | |||
+ | ===== Доступно в ===== | ||
+ | [[raznovidnosti_jazyka_sql|DSQL]] [[raznovidnosti_jazyka_sql|ESQL]] | ||
+ | |||
+ | ===== Формат ===== | ||
+ | <code> | ||
+ | Для версии 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> | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ^ Аргумент ^ Описание ^ | ||
+ | |name |Имя создаваемого триггера.| | ||
+ | |ACTIVE |Определяет, что действие триггера дает эффект, когда тот запускается (по умолчанию).| | ||
+ | |INACTIVE |Определяет, что действие триггера не дает эффекта.| | ||
+ | |BEFORE |Определяет, что триггер срабатывает перед ассоциированной операцией.| | ||
+ | |AFTER |Определяет, что триггер срабатывает после ассоциированной операции.| | ||
+ | |DELETE, INSERT, UPDATE |Определяет операцию над таблицей, при которой срабатывает триггер.| | ||
+ | |POSITION number |Определяет порядок в котором срабатывают триггеры перед или после того же самого действия. number должен быть целым от 0 до 32767. Триггер с меньшим номером срабатывает раньше. Триггеры для того же самого действия, с тем же самым позиционным номером, будут запущены в случайном порядке.| | ||
+ | |trigger_body |Тело триггера, блок инструкций на языке процедур и триггеров.| | ||
+ | |terminator |Терминатор, определенный для ISQL командой [[SET TERM]], указывающий на конец тела триггера.| | ||
+ | |||
+ | ===== Описание ===== | ||
+ | |||
+ | Создает триггер, то есть блок [[raznovidnosti_jazyka_sql|PSQL]] кода, который выполняется автоматически перед или после изменения таблицы или отображения. | ||
+ | |||
+ | |||
+ | ===== Пример ===== | ||
+ | Триггер, использующий значения генератора, для значений поля, при вставке записей. | ||
+ | <code sql> | ||
+ | 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 ;!! | ||
+ | </code> | ||
+ | |||
+ | ===== См. также ===== | ||
+ | [[ALTER TRIGGER]], [[DROP TRIGGER]] | ||
+ | |||
+ | ===== Источник ===== | ||
+ | [[http://firebirdsql.org/refdocs/langrefupd20.html|Firebird 2.0 Language Ref. Update]] |