Microsoft SQL Server
Спусковой крючок
Поиск…
Вступление
Триггер - это особый тип хранимой процедуры, который выполняется автоматически после возникновения события. Существует три типа триггеров: триггеры языка определения данных и триггеры языка управления данными.
Обычно он привязан к столу и срабатывает автоматически. Вы не можете явно вызвать какой-либо триггер.
Типы и классификации триггеров
В SQL Server существует две категории триггеров: триггеры DDL и триггеры DML.
Триггеры DDL запускаются в ответ на события Data Definition Language (DDL). Эти события в основном соответствуют операторам Transact-SQL, которые начинаются с ключевых слов CREATE
, ALTER
и DROP
.
DML Triggers запускаются в ответ на события языка манипулирования данными (DML). Эти события соответствуют операторам Transact-SQL, которые начинаются с ключевых слов INSERT
, UPDATE
и DELETE
.
Триггеры DML подразделяются на два основных типа:
После триггеров (для триггеров)
- ПОСЛЕ ВСТАВКИ Триггер.
- ПОСЛЕ ОБНОВЛЕНИЯ Триггер.
- ПОСЛЕ УДАЛЕНИЯ Триггера.
Вместо триггеров
- ВМЕСТО ВСТАВКИ Триггер.
- ВМЕСТО ОБНОВЛЕНИЯ Триггер.
- INSTEAD OF DELETE Триггер.
Триггеры DML
DML Triggers запускаются как ответ на инструкции dml ( insert
, update
или delete
).
Триггер dml может быть создан для адресации одного или нескольких событий dml для отдельной таблицы или представления. Это означает, что один триггер dml может обрабатывать вставку, обновление и удаление записей из определенной таблицы или представления, но в них могут обрабатываться только данные, которые изменяются в этой отдельной таблице или представлении.
DML Triggers предоставляет доступ к inserted
и deleted
таблицам, в которых содержится информация о данных, которые были / будут затронуты оператором вставки, обновления или удаления, которые запускали триггер.
Обратите внимание, что триггеры DML основаны на операторах, а не на основе строк. Это означает, что если оператор произвел более одной строки, вставленные или удаленные таблицы будут содержать более одной строки.
Примеры:
CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething
FOR INSERT
AS
INSERT INTO tblAudit (TableName, RecordId, Action)
SELECT 'tblSomething', Id, 'Inserted'
FROM Inserted
GO
CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething
FOR UPDATE
AS
INSERT INTO tblAudit (TableName, RecordId, Action)
SELECT 'tblSomething', Id, 'Updated'
FROM Inserted
GO
CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething
FOR DELETE
AS
INSERT INTO tblAudit (TableName, RecordId, Action)
SELECT 'tblSomething', Id, 'Deleted'
FROM Deleted
GO
Все приведенные выше примеры добавят записи в tblAudit всякий раз, когда запись добавляется, удаляется или обновляется в tblSomething.