Старое значение столбца не отражается в триггерах - PullRequest
0 голосов
/ 20 января 2012

мой триггер обновления, как показано ниже.

CREATE TRIGGER [dbo].[tb_sample_UpdationTrigger] on [dbo].[tb_sample]  for UPDATE
as
 if UPDATE(R_Id) 
 insert into dbo.test_log(Attribute,Action,OldValue,NEwValue,UserId,ModifiedDate)   

(SELECT 'R_Id','update',tb_sample.R_Id,inserted.R_Id ,1,GETDATE()
 from inserted 
 inner join tb_sample on inserted.id =tb_sample.id)

. Я обновляю R_Id со 100000 до 200000. Но запись, вставленная в таблицу журнала, равна

   R_Id update  200000      200000      1   2012-01-20 12:38:16.730 

Если мы видим старое значение и новое значение, оба равны 200000. Wats не так здесь?

1 Ответ

2 голосов
/ 20 января 2012

Если вы хотите получить старое значение, вы должны использовать специальную таблицу deleted, поскольку обновление можно рассматривать как действие удаления и вставки. См .: Использование вставленных и удаленных таблиц . Таким образом, ваш выбор должен выглядеть (не проверено):

SELECT 'R_Id','update', d.R_Id, i.R_Id ,1,GETDATE()
FROM inserted i
INNER JOIN deleted d ON d.id=i.id
INNER JOIN tb_sample ON tb_sample.id=i.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...