SQL Server вместо триггеров вставки - есть ли простой способ изменить один столбец? - PullRequest
5 голосов
/ 28 апреля 2010

Учитывая, что SQL Server не позволяет изменять логические таблицы INSERTED и DELETED в триггере, существует ли простой способ изменить значение одного столбца и не нужно переписывать весь оператор вставки?

Например, таблица, к которой я применяю триггер, имеет 20 столбцов. Я хочу изменить значение из таблицы INSERTED для одного столбца (на строку), а затем вставить эту строку в таблицу. Могу ли я сделать это без написания оператора вставки с 19 столбцами плюс один столбец, значение которого я изменяю?

Ответы [ 2 ]

7 голосов
/ 28 апреля 2010

Да, просто используйте триггер «после вставки» вместо триггера «вместо вставки».

Таким образом, строка уже вставлена ​​в таблицу, и все, что вам нужно сделать, - это выполнить (тщательно созданный) оператор обновления, обычно путем внутреннего присоединения к таблице INSERTED в поле первичного ключа.

3 голосов
/ 28 апреля 2010

Чтобы добавить больше деталей в ответ BradCs:

Синтаксис для обновления с объединением немного шаткий

Update table
  set columnA = inserted.columnA / 10
from table
inner join inserted on table.id = inserted.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...