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

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

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

5
задан Matt 28 April 2010 в 14:01
поделиться

2 ответа

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

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

7
ответ дан 13 December 2019 в 22:03
поделиться

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

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

Update table
  set columnA = inserted.columnA / 10
from table
inner join inserted on table.id = inserted.id
3
ответ дан 13 December 2019 в 22:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: