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

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


Боковая панель

Введение

Статьи и часто задаваемые вопросы

Установка и настройка

Обработка ошибок

Полезные запросы SQL

Тематические группы

alter_trigger

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

ALTER TRIGGER name
[ACTIVE | INACTIVE]
  [{BEFORE | AFTER} {DELETE | INSERT | UPDATE}]
  [POSITION number]
  [AS <trigger_body>] [terminator]

Для Firebird v1.5 и выше

ALTER TRIGGER name
[ACTIVE | INACTIVE]
  [{BEFORE | AFTER} {DELETE | INSERT | UPDATE [OR {DELETE | INSERT | UPDATE} [OR {DELETE | INSERT | UPDATE}]]} ]
  [POSITION number]
  [AS <trigger_body>] [terminator]
Аргумент Описание
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, делая его не активным. (а пассивным :))

ALTER TRIGGER SET_CUST_NO INACTIVE;

Следующая инструкция изменяет триггер SET_CUST_NO, чтобы вставлять строку в таблицу NEW_CUSTOMER для каждого нового заказчика:

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 ; !!

Следующая инструкция изменяет триггер AFTER_CUST_INS, чтобы он срабатывал после любого действия над таблицей:

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 ; !!

См. также

Источник

langref.pdf

Только авторизованные участники могут оставлять комментарии.
alter_trigger.txt · Последние изменения: 2008/12/23 23:17 — urandom