Инструменты пользователя

Инструменты сайта


alter_trigger

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
alter_trigger [2008/12/23 23:15]
urandom Поправлено fire на русский вариант
alter_trigger [2008/12/23 23:17] (текущий)
urandom Поправлено еще немного fire :)
Строка 1: Строка 1:
 +====== ALTER 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 ^
 +|  Да  |  Да  |  Да  |  Да  |  Да  |  Да  |  Да  |  Да  |  Да  |  ?  |  ?  |
 +
 +===== Формат =====
 +Для Firebird v0.9, Firebird v1.0
 +<​code>​
 +ALTER TRIGGER name
 +[ACTIVE | INACTIVE]
 +  [{BEFORE | AFTER} {DELETE | INSERT | UPDATE}]
 +  [POSITION number]
 +  [AS <​trigger_body>​] [terminator]
 +</​code>​
 +
 +Для Firebird v1.5 и выше
 +<​code>​
 +ALTER TRIGGER name
 +[ACTIVE | INACTIVE]
 +  [{BEFORE | AFTER} {DELETE | INSERT | UPDATE [OR {DELETE | INSERT | UPDATE} [OR {DELETE | INSERT | UPDATE}]]} ]
 +  [POSITION number]
 +  [AS <​trigger_body>​] [terminator]
 +</​code>​
 +
 +^ Аргумент ^ Описание ^
 +|name |Имя существующего триггера.|
 +|ACTIVE |Определяет,​ что действие триггера дает эффект,​ когда тот запускается (по умолчанию).|
 +|INACTIVE |Определяет,​ что действие триггера не дает эффекта.|
 +|BEFORE |Определяет,​ что триггер срабатывает перед ассоциированной операцией.|
 +|AFTER |Определяет,​ что триггер срабатывает после ассоциированной операцией.|
 +|DELETE, INSERT, UPDATE| Определяет операцию над таблицей,​ при которой срабатывает триггер.|
 +|POSITION number |Определяет порядок в котором срабатывают триггеры перед или после того же самого действия. number должен быть целым от 0 до 32767. Триггер с меньшим номером срабатывает раньше. Триггеры для того же самого действия,​ с тем же самым позиционным номером,​ будут запущены в случайном порядке.|
 +|trigger_body |Тело триггера,​ блок инструкций на языке процедур и триггеров. Смотри [[CREATE TRIGGER]] для полного описания.|
 +|terminator |Терминатор,​ определенный для ISQL командой [[SET TERM]], указывающий на конец тела триггера. Необязателен,​ при изменении только заголовка триггера.|
 +
 +===== Описание =====
 +ALTER TRIGGER изменяет определение существующего триггера. Если какие-либо аргументы инструкции ALTER TRIGGER пропущены,​ тогда они, по умолчанию,​ принимают текущие значения,​ которые определены инструкцией [[CREATE TRIGGER]] или последующей ALTER TRIGGER.
 +
 +ALTER TRIGGER может изменить:​
 +
 +  * Только информацию заголовка,​ заключенную в activation status триггера,​ when it performs its actions, событие,​ которое запускает триггер и порядок,​ в котором триггеры запускаются.
 +  * Только информацию тела: инструкции которые следуют за предложением AS.
 +  * Информацию заголовка и тела триггера. В этом случае новое определение триггера заменяет старое определение. ​
 +
 +Триггер может быть изменен его создателем и пользователем SYSDBA.
 +
 +:!: Изменение триггера определено автоматически для [[CHECK]] ограничения таблицы,​ используйте [[ALTER TABLE]], чтобы изменить определение ограничения.
 +
 +===== Пример =====
 +Cледующая инструкция изменяет триггер SET_CUST_NO,​ делая его не активным. (а пассивным :))
 +<​code>​
 +ALTER TRIGGER SET_CUST_NO INACTIVE;
 +</​code>​
 +
 +Следующая инструкция изменяет триггер SET_CUST_NO,​ чтобы вставлять строку в таблицу NEW_CUSTOMER для каждого нового заказчика:​
 +<​code>​
 +SET TERM !! ;
 +
 +ALTER TRIGGER SET_CUST_NO FOR CUSTOMER
 +BEFORE INSERT AS
 +BEGIN
 +  NEW.CUST_NO = GEN_ID(CUST_NO_GEN,​ 1);
 +  INSERT INTO NEW_CUSTOMERS(NEW.CUST_NO,​ TODAY)
 +END !!
 +
 +SET TERM ; !!
 +</​code>​
 +
 +Следующая инструкция изменяет триггер AFTER_CUST_INS,​ чтобы он срабатывал после любого действия над таблицей:​
 +<​code>​
 +SET TERM !! ;
 +
 +ALTER TRIGGER AFTER_CUST_INS FOR CUSTOMER
 +AFTER INSERT OR UPDATE OR DELETE POSITION 200 
 +AS
 +BEGIN
 +  POST_EVENT '​CUSTOMER_CHANGED';​
 +END !!
 +
 +SET TERM ; !!
 +</​code>​
 +===== См. также =====
 +[[CREATE TRIGGER]], [[DROP TRIGGER]], [[RDB$TRIGGERS]],​ [[SET TERM]], [[CREATE PROCEDURE]]
 +
 +===== Источник =====
 +langref.pdf
  
alter_trigger.txt · Последние изменения: 2008/12/23 23:17 — urandom