Основные сведения о DML-триггерах
Microsoft SQL Server 2005 предоставляет два механизма реализации бизнес-правил и целостности данных: ограничения и триггеры. Триггером называют хранимую процедуру особого типа, которая автоматически выполняется при возникновении языкового события. SQL Server поддерживает два основных типа триггеров: DML-триггеры и DDL-триггеры.
DDL-триггеры впервые появились в SQL Server 2005. Они выполняются при возникновении событий языка определения данных (DDL) на сервере или в базе данных. Более подробно они описаны в разделе DDL-триггеры.
DML-триггеры выполняются при возникновении событий языка обработки данных (DDL) в базе данных. DML-события возникают при выполнении инструкций INSERT, UPDATE или DELETE, изменяющих данные в указанной таблице или представлении. DML-триггеры могут обращаться к другим таблицам и содержать сложные инструкции Transact-SQL. Триггер и инструкция, при выполнении которой он срабатывает, считаются одной транзакцией, которую можно откатить назад внутри триггера. При обнаружении серьезной ошибки (например, нехватки пространства на диске) вся транзакция автоматически откатывается назад.
DML-триггеры удобно использовать в следующих случаях:
- Для каскадных изменений в связанных таблицах базы данных; однако эти изменения можно более эффективно выполнить при помощи каскадных ограничений ссылочной целостности.
- Для предотвращения случайных или неправильных операций INSERT, UPDATE и DELETE и реализации других более сложных ограничений, чем те, которые определены при помощи ограничения CHECK.
В отличие от ограничений CHECK, DML-триггеры могут ссылаться на столбцы других таблиц. Например, триггер может использовать инструкцию SELECT для сравнения вставленных или обновленных данных и выполнения других действий, например изменения данных или отображения пользовательского сообщения об ошибке. - Чтобы оценить состояние таблицы до и после изменения данных и предпринять действия на основе этого различия.
- Несколько DML-триггеров одинакового типа (INSERT, UPDATE или DELETE) для таблицы позволяют предпринять несколько различных действий в ответ на одну инструкцию изменения данных.
См. также
Основные понятия
Типы триггеров DML
Сравнение триггеров и ограничений
Триггеры DML в образце базы данных AdventureWorks