Триггеры
Использование таблиц вставки и удаления
SQL Server создает две таблицы, облегчающие манипулирование данными при применении триггеров. Таблицы вставки и удаления представляют собой временные резидентно хранящиеся в памяти таблицы, которые содержат строки, подвергшиеся воздействию команды, вызвавшей триггер.
Если триггер вызывается из команды DELETE, таблица удаления будет содержать строки, которые были удалены из таблицы. При вызове из команды INSERT таблица вставки будет содержать копию новых (вставляемых) строк. Физически оператор UPDATE представляет собой последовательное выполнение команды удаления DELETE и вставки INSERT, так что таблица удаления будет содержать старые значения, а таблица вставки – новые значения. Вы можете обращаться к содержимому этих таблиц из триггера, но вы не можете изменять их.
Напомним, что триггеры AFTER не вызываются до тех пор, пока не будет осуществлена модификация таблицы, т.е. строки в исходных таблицах уже подвергнутся изменениям. С другой стороны, триггер INSTEAD OF вызывается вместо действия, для которого он определен, поэтому таблица еще не будет изменена. Фактически, таблица вообще не будет изменена, если команда INSTEAD OF не назначит соответствующие команды.
Внимание! Триггер вызывается для команды, а не для строки. Вам следует проявлять осторожность при написании триггеров, затрагивающих несколько строк (в случае их наличия) в таблицах вставки и удаления. Глобальная переменная @@ROWCOUNT будет возвращать количество записей в этих таблицах, если вы обратитесь к ней в начале описания вашего триггера.
Используйте таблицу удаления
- Перейдите к окну Query (Запрос), содержащему сценарий UpdateFunc.
- Нажмите кнопку Load Script (Загрузить сценарий)в панели инструментов анализатора запросов Query Analyzer. Query Analyzer отобразит диалоговое окно Open Query File (Открытие файла запроса).
- Выделите сценарий tableTrigger и нажмите кнопку Open (Открыть). Query Analyzer загрузит сценарий в окно Query (Запрос).
- Нажмите кнопку Execute Query (Выполнить запрос)в панели инструментов анализатора запросов Query Analyzer. Query Analyzer создаст триггер.
- Перейдите к окну Query (Запрос), содержащему сценарий TestAfterUpdate.
- Нажмите кнопку Execute Query (Выполнить запрос)в панели инструментов анализатора запросов Query Analyzer. Query Analyzer выполнит сценарий и отобразит результат.