■ Описывать, как работает триггер удаления DELETE.
■ Описывать, как работает триггер обновления UPDATE.
■ Описывать, как работает триггер INSTEAD OF.
■ Описывать, как работают вложенные триггеры.
■ Приводить основные сведения о рекурсивных триггерах.
Триггеры языка манипулирования данными (DML) - сильный инструмент, который позволяет Вам реализовать домен, сущность и ссылочную целостность данных. Из этого урока Вы узнаете, что такое триггеры DML и как они могут обеспечить целостность данных, а также узнаете о различных типах триггеров, доступных для Вас, и как определить триггеры в Вашей базе данных.
Триггер - специальный вид хранимой процедуры, которая выполняется когда оператор INSERT, UPDATE, или DELETE изменяет данные в указанной таблице. Триггер может запрашивать данные другой таблицы и может включать сложные операторы Transact-SQL. Триггеры часто создаются для обеспечения ссылочной целостности или согласованности среди логически связанных данных в различных таблицах. Поскольку пользователи не могут обойти триггеры, а Вам доступны эти возможности Transact-SQL, Вы можете использовать триггеры, чтобы реализовать сложную бизнес логику, которая является трудной или невозможной для реализации при использовании других механизмов поддержки целостности данных.
Рассмотрим следующие факты о триггерах:
■ Триггер и оператор, на который он срабатывает, рассматривается как одна транзакция, которая может быть отменена внутри этого триггера. Если была обнаружена серьезная ошибка (например, недостаточно дисковой памяти), то вся транзакция автоматически откатывается.
■ Триггеры могут каскадировать изменения через связанные таблицы базы данных; однако, эти изменения могут быть выполнены более эффективно при использовании каскадирования ссылочного ограничения целостности.
■ Триггеры могут защищать против злонамеренной или неправильной операции вставки, обновления или удаления и реализовать другие ограничения, более сложные, чем при использовании ограничений CHECK.
■ Триггеры могут ссылаться на столбцы других таблиц, в отличие от ограничений CHECK. Например, триггер может использовать оператор SELECT, выбирающий данные другой таблицы для сравнения с вставленными или обновленными данными, затем этот триггер может выполнить дополнительные действия, такие как изменение данных или вывод пользовательского сообщения об ошибке.
■ Триггеры могут оценить состояние таблицы до и после модификации данных и выполнить действия, основанные на этом различии.
■ Множество триггеров одного и того же типа (INSERT, UPDATE, или DELETE) на таблице позволяют в ответ на одну модификацию иметь место множеству различных действий.