Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Триггеры в диалекте Transact-SQL






В Transact-SQL триггеры создаются инструкцией create trigger (как в Microsoft SQL Server, так и в Sybase Adaptive Server).

Специально для триггеров Transact-SQL определяет две виртуальные таблицы, структура которых идентична структуре таблицы, с которой связан триггер. Эти таблицы называются deleted и inserted. Они заполняются строками из модифицируемой таблицы, причем их конкретное содержимое зависит от выполняемой операции:

• delete — все строки, удаленные из связанной таблицы, помещаются в таблицу deleted, таблица inserted пуста;

• INSERT — все строки, добавленные в связанную таблицу, помещаются в таблицу inserted, таблица DELETED пуста;

• update — для каждой строки связанной таблицы, измененной инструкцией update, ее исходная версия помещается в таблицу deleted, а новая версия — в таблицу inserted.

К этим двум виртуальным таблицам можно обращаться из тела триггера, и их данные можно использовать в триггере наряду с данными всех остальных таблиц.

Для триггеров, связанных с инструкцией UPDATE, в Transact-SQL предусмотрена возможность выяснить, какие именно столбцы таблицы были изменены, и в ответ выполнить соответствующие действия. Для этого в триггерах может использоваться специальная форма инструкции IF — IF update.

Триггеры в диалекте Informix

В Informix триггеры тоже создаются с помощью инструкции create trigger. Как и в Transact-SQL, эта инструкция определяет имя триггера, таблицу, с которой он связан, и действия, в ответ на которые он выполняется.

Informix позволяет указать, когда именно должен вызываться создаваемый триггер

• before — триггер вызывается перед выполнением любых изменений, когда ни одна строка связанной таблицы еще не модифицирована;

• after — триггер вызывается после выполнения всех изменений, когда все строки связанной таблицы уже модифицированы;

• FOR each ROW — триггер вызывается для каждой модифицируемой строки, и ему доступны как старая, так и новая версия этой строки.

Для каждого из этих этапов в триггере может быть задана отдельная последовательность действий.

В отличие от других СУБД, Informix ограничивает набор действий, которые могут выполняться триггером. Допускаются только.

• инструкция insert;

• инструкцияDELETE;

• инструкция update;

• инструкция EXECUTE PROCEDURE.

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.