Когда срабатывает триггер DELETE, удаленные строки таблицы помещаются в специальную таблицуdeleted. Таблица deleted- логическая таблица, которая хранит копии удаленных строк. Таблица deletedпозволяет ссылаться на данные, записанные в журнал от инициализации оператора DELETE.
Примите к сведению следующие факты, когда Вы используете триггер DELETE:
■, Когда к таблицеdeleted добавляется строка, она больше не существует в таблице базы данных; поэтому, у таблицы deletedи таблиц базы данных нет никаких общих строк.
■ Для таблицыdeleted выделяется память. Таблица deletedвсегда в кеш-памяти.
■ Триггер, который определен для действия DELETE, не выполняется для оператора TRUNCATE TABLE, так как TRUNCATE TABLE не журналируется.
В следующем коде демонстрируется создание триггера DELETE delCustomerна таблице Sales.Customerбазы данных AdventureWorks.
CREATE TRIGGER [delCustomer] ON [Sales].[Customer]
AFTER DELETE AS
BEGIN
SET NOCOUNT ON;
EXEC master..xp_sendmail
@recipients=N'SalesManagers@Adventure-Works.com',
@message = N'Customers have been deleted!!';
END;
Триггер UPDATE - триггер, который выполняется всякий раз, когда оператор INSERT изменяет данные в таблице или представлении, на котором определен этот триггер.
Триггер обновления UPDATE логически выполняется в два шага:
1.Шаг УДАЛЕНИЯ, который охватывает исходный вид данных (строки до обновления).
2.Шаг ВСТАВКИ, который охватывает новый вид данных (строки после обновления).
Когда выполняется оператор UPDATE на таблице, для которой определен триггер обновления, то оригинальные строки (исходный вид данных) помещаются в таблицуdeleted, а обновленные строки (новый вид данных) вставляются в таблицуinserted.
Триггер может исследовать таблицыdeletedиinserted, так же как таблицуupdated, для определения того, были ли строки обновлены, и какие действия должны быть выполнены.
Вы можете определить триггер, чтобы контролировать обновления данных на определенном столбце при использовании оператора IF UPDATE. Это позволяет триггеру легко изолировать деятельность для определенного столбца. Когда обнаруживается, что определенный столбец был обновлен, можно предпринять надлежащее действие, такое как генерация ошибочного сообщения о том, что столбец не может быть обновлен, или обработка серии операторов, основанных на недавно обновленном значении столбца.