Синтаксис для изменения триггеров
Синтаксис для изменения триггеров
Синтаксис:
{ALTER TRIGGER ИМЯ} |
{CREATE OR ALTER TRIGGER имя FOR {таблица | просмотр}
[ACTIVE | INACTIVE]
[{BEFORE | AFTER} {DELETE | INSERT | UPDATE}]
[POSITION число]
AS <тело-триггера>;
ALTER TRIGGER
Предложение FOR ИМЯ, применяемое в CREATE TRIGGER, опускается, ALTER TRIGGER не может использоваться для изменения таблицы, с которой ассоциирован триггер.
Изменение только заголовка
Когда вы используете ALTER TRIGGER для изменения только заголовка, оператор требует по меньшей мере одного изменяемого атрибута после имени триггера. Любой атрибут заголовка, опущенный в этом операторе, остается неизменным.
Следующий оператор деактивирует триггер SAVE_SALARY_CHANGE:
ALTER TRIGGER SAVE SALARY CHANGE INACTIVE;
Если изменяется индикатор фазы (BEFORE или AFTER), ТО событие (UPDATE, INSERT или DELETE) также должно быть указано. Например, следующий оператор заново активирует триггер SAVE_SALARY_CHANGE и указывает, что он будет выполняться до изменения, а не после:
ALTER TRIGGER SAVE_SALARY_CHANGE
ACTIVE BEFORE UPDATE;
Изменение тела
Любое изменение тела триггера приводит к тому, что новое определение тела заменяет старое определение. Оператор ALTER TRIGGER не должен содержать никакую информацию заголовка, кроме имени триггера.
Например, следующий оператор изменяет триггер SET CUST NO, который был создан с таким определением:
CREATE TRIGGER SET_CUST_NO FOR CUSTOMER
BEFORE INSERT
AS
BEGIN
IF (NEW.CUST_NO IS NULL) THEN
NEW.CUST_NO = GEN_ID(CUST_NO_GEN, 1);
END^
Мы изменим этот триггер, чтобы он добавлял новую строку в таблицу NEW CUSTOMERS каждый раз, когда новая строка добавляется в таблицу CUSTOMER:
SET TERM ^;
ALTER TRIGGER SET_CUST_NO
BEFORE INSERT AS
BEGIN
IF (NEW.CUST_NO IS NULL) THEN
NEW.CUST_NO = GEN_ID(CUST_NO_GEN, 1);
INSERT INTO NEW_CUSTOMERS(NEW.CUST_NO, CURRENT_DATE) END ^
SET TERM ;^
CREATE OR ALTER TRIGGER
В версии 1.5 этот новый синтаксис создает триггер, если триггер с указанным именем не найден, или изменяет триггер с этим именем. Просто отредактируйте исходный оператор CREATE нужным образом, добавив ключевые слова OR ALTER.
Ошибка "объект находится в использовании"
Как и в случае с хранимыми процедурами, подтверждение изменений вызовет печально известную ошибку "объект находится в использовании" (Object in use), если в настоящий момент какой-нибудь пользователь использует триггер или какой-либо объект, зависящий от него. В любом случае новая версия триггера не станет немедленно доступной в Суперсервере, если старая версия все еще находится в кэше. Все пользователи должны отключиться от базы данных, а когда они вновь подключатся, то смогут видеть новую версию.
В Классическом сервере новая версия будет доступна следующему клиенту, который соединится с базой данных.
Inactive/Active
В версии 1.5 и более поздних выполнение ALTER TRIGGER ... INACTIVE | ACTIVE обычно не приводит к ошибке "объект находится в использовании", если только существующая транзакция не заблокировала таблицу. Такое изменение не влияет на транзакции, которые уже используют эту таблицу. Причем данное изменение будет видимым следующей транзакции, которая запрашивает изменение состояния таблицы.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
22.10.3 Изменения в DNS
22.10.3 Изменения в DNS Новый тип записи о ресурсе, AAAA, отображает имена доменов в адреса IP версии 6. Пример такой записи:MICKEY IN AAAA 4321:0:1:2:3:4:567:89ABДолжен быть обеспечен и обратный просмотр. Для преобразования адресов в имена для IPv6 потребуется добавить новые домены. Обратный поиск
Увеличение глубины рекурсии процедур и триггеров
Увеличение глубины рекурсии процедур и триггеров Количество рекурсивных вызовов процедур и триггеров увеличено до
Изменения
Изменения Если изменений в документе много, удобно пользоваться этой группой кнопок.Например, вы видите исправление, и вы с ним согласны. Ставите в него курсор и нажимаете кнопку Принять. Выделение исправления пропадает, и оно органично вписывается в ваш текст.У этой
Создание триггеров
Создание триггеров Триггер (trigger) — это особый тип хранимой процедуры, который выполняется при доступе к данным в таблице. Понятие триггера в SQL Server аналогично понятию процедуры события в Visual Basic: триггер выполняется при обновлении, удалении или вставке данных в
5.5. Двоичная регистрация сохраненных подпрограмм и триггеров
5.5. Двоичная регистрация сохраненных подпрограмм и триггеров Двоичный файл регистрации содержит информацию относительно инструкций SQL, которые изменяют содержание базы данных. Эта информация сохранена в форме события. Это описывает модификации. Двоичный файл
Действия триггеров по изменению правил целостности
Действия триггеров по изменению правил целостности Очевидно, что правила целостности применяются, когда происходят изменения данных, влияющих на отношение. При этом правила по умолчанию не всегда подходят для всех требований. Мы можем захотеть перекрыть правило,
Преимущества использования триггеров
Преимущества использования триггеров Перечислим преимущества использования триггеров.* Автоматическое применение ограничения данных, чтобы убедиться, что пользователи вводят только допустимые значения в столбцы.* Сокращение объема поддержки приложений, поскольку
Элементы процедур и триггеров
Элементы процедур и триггеров Определения модулей PSQL действительно являются одним оператором SQL, который начинается предложением CREATE и завершается терминатором. В определении модуля существует множество элементов: предложений, ключевых слов, блоков множества
Компиляция хранимых процедур и триггеров
Компиляция хранимых процедур и триггеров Для компиляции любого файла скрипта вы должны включить в файл, по крайней мере, одну "пустую строку" после последнего оператора или комментария. Чтобы сделать это, нажмите, по меньшей мере, один раз клавишу <Return> (Enter) в вашем
Создание триггеров
Создание триггеров Триггер определяется с помощью оператора CREATE TRIGGER, который состоит из заголовка и тела. Заголовок триггера отличается от заголовка хранимой процедуры, он содержит:* имя триггера, которое должно быть уникальным в базе данных;* имя таблицы,
Особенности PSQL для триггеров
Особенности PSQL для триггеров Два особых элемента PSQL доступны триггерам: логические контекстные переменные событий INSERTING, UPDATING и DELETING и контекстные переменные NEW и OLD. Переменные события В Firebird появляются логические контекстные переменные INSERTING, UPDATING и DELETING, чтобы
Изменение триггеров
Изменение триггеров Firebird 1.0.x предоставляет только один способ изменения триггеров при использовании операторов DDL, a Firebird 1.5 добавляет еще один.* ALTER TRIGGER изменяет определение существующего модуля триггера, сохраняя его зависимости от других объектов. Он может быть
Удаление триггеров
Удаление триггеров В процессе проектирования базы данных и разработки приложений триггер может перестать быть полезным. Для удаления триггера соединитесь с базой данных как его владелец или пользователь SYSDBA и используйте оператор DROP TRIGGER.Его синтаксис:DROP TRIGGER ИМЯ;Имя