Подтвердить что ты не робот

SQL Server Update Trigger, Получить поля до и после обновления

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

4b9b3361

Ответ 1

Триггеры 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)

Ответ 2

вам понадобятся специальные триггерные и вставленные таблицы. Из MSDN:

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

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