Мне нужен пример запуска SQL Server Update Trigger, Получить поля до и после обновления для выполнения SQL-статусов в другой таблице
SQL Server Update Trigger, Получить поля до и после обновления
Ответ 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. Во время транзакции вставки или обновления новые строки добавляются как в вставленную таблицу, так и в таблицу триггеров. Строки во вставленной таблице представляют собой копии новых строк в таблице триггеров.