Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Триггеры тип AFTER и INSTEAD OF в чем разница?  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1141
Всем привет! Подскажите пожалуйста правильно ли я понимают разницу.
Операции в триггере INSTEAD OF выполняются ВМЕСТО операций, а AFTER ПОСЛЕ операции.
Значит если мне что-то нужно изменить, вместе с изменениями данных, то выгоднее использовать INSTEAT OF т.к. операция с изменениями будет только одна (например insert), а в случае с AFTER будет insert + update.

пример

 create table myTable(f1 int,f2 int)
 
 declare
  @f2 int = (select 1+1)

 insert into myTable(f1,f2)
 values(1,@f2)

 -- при использовании триггеров запрос измениться так
 insert into myTable(f1)
 values(1)

 -- instead of
 declare
  @f2 int = (select 1+1)

 insert into myTable(f1,f2)
 select  f1,@f2
 from inserted

 -- after
 declare
  @f2 int = (select 1+1)

 update t set
  f2 = @f2
 from myTable t
 join inserted i on i.f1 = t.f1
17 авг 17, 13:05    [20730999]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры тип AFTER и INSTEAD OF в чем разница?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Mandarin,

угу, INSTEAD OF это полная замена операции, вместо INSERT/... делать то что в триггере.
17 авг 17, 13:08    [20731015]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры тип AFTER и INSTEAD OF в чем разница?  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1141
TaPaK,

понятно, спасибо!
17 авг 17, 13:15    [20731039]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить