Справочник по инструкциям и функциям InterBase SQL
Описание
ALTER TRIGGER изменяет определение существующего триггера. Если какие-либо аргументы инструкции ALTER TRIGGER пропущены, тогда они, по умолчанию, принимают текущие значения, которые определены инструкцией CREATE TRIGGER или последующей ALTER TRIGGER.
ALTER TRIGGER может изменить:
- Только информацию заголовка, заключенную в activation status триггера, when it performs its actions, событие, которое fires триггер и порядок, в котором триггеры fires.
- Только информацию тела: инструкции которые следуют за предложением AS.
- Информацию заголовка и тела триггера. В этом случае новое определение триггера заменяет старое определение.
Триггер может быть изменен его создателем и пользователем SYSDBA.
Обратите внимание: Изменение триггера определено автоматически для CHECK ограничения таблицы, используйте ALTER TABLE, чтобы изменить определение ограничения.
Синтаксис
ALTER TRIGGER name [ACTIVE | INACTIVE] [{BEFORE | AFTER} {DELETE | INSERT | UPDATE}] [POSITION number] [AS <trigger_body>] [terminator]
Аргумент | Описание |
---|---|
name |
Имя существующего триггера. |
ACTIVE |
Определяет, что действие триггера дает эффект, когда fired (по умолчанию). |
INACTIVE |
Определяет, что действие триггера не дает эффекта. |
BEFORE |
Определяет, что триггер fires перед ассоциированной операцией. |
AFTER |
Определяет, что триггер fires после ассоциированной операцией. |
DELETE | INSERT | UPDATE |
Определяет операцию над таблицей, с которой связывает триггер to fire. |
POSITION number |
Определяет порядок в котором firing триггеры перед или после того же самого действия. number должен быть целым от 0 до 32767. Триггер с меньшим номером fire первым. Триггеры для того же самого действия, с тем же самым позиционным номером, буду fire в случайном порядке. |
trigger_body |
Тело триггера, блок инструкций на языке процедур и триггеров. Смотри CREATE TRIGGER для полного описания. |
terminator |
Терминатор, определенный для ISQL командой SET TERM, указывающий конец тела триггера. Необязателен, при изменении только заголовка триггера. |
Примеры
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 ; !!