Триггер обновления SQL Server, получение полей до и после обновления - PullRequest
29 голосов
/ 06 июня 2010

Мне нужен пример триггера обновления SQL Server, Получить поля до и после обновления для выполнения SQL-отчетов в другой таблице

Ответы [ 2 ]

81 голосов
/ 06 июня 2010

Триггеры SQL Server имеют доступ к 2 «волшебным» таблицам, которые содержат строки для каждой строки, которая была вставлена, обновлена ​​или удалена в операторе, вызвавшем запуск триггера.

Чтобы найти все вставленные строки в инструкции INSERT:

select * from inserted

Для всех удаленных строк в инструкции DELETE:

select * from deleted

Для операторов UPDATE каждая обновленная строка будет присутствовать как во вставленной, так и в удаленной таблице. Вставленная таблица будет содержать новое значение строки после оператора обновления, а удаленная таблица будет содержать старое значение строки непосредственно перед оператором обновления. Соедините две таблицы, чтобы получить то, что вам нужно:

select i.*, d.*
from inserted i
join deleted d on (i.id = d.id)
1 голос
/ 06 июня 2010

вы хотите, чтобы специальный триггер удалял и вставлял таблицы. Из MSDN:

В триггерах DML вставленные и удаленные таблицы в основном используются для выполнения следующих действий: Расширить ссылочную целостность между таблицами. Вставьте или обновите данные в базовых таблицах, лежащих в основе представления. Проверьте на ошибки и примите меры на основе ошибки. Найдите разницу между состоянием таблицы до и после изменения данных и выполните действия на основе этой разницы. В удаленной таблице хранятся копии затронутых строк во время операторов DELETE и UPDATE. Во время выполнения оператора DELETE или UPDATE строки удаляются из таблицы триггеров и переносятся в удаленную таблицу. Удаленная таблица и триггерная таблица обычно не имеют общих строк. Вставленная таблица хранит копии затронутых строк во время операторов INSERT и UPDATE. Во время транзакции вставки или обновления новые строки добавляются как во вставленную таблицу, так и в таблицу триггеров. Строки во вставленной таблице являются копиями новых строк в таблице триггеров.

проверьте здесь для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...