我的更新触发器如下。
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在这里错了吗?
答案 0 :(得分:2)
如果要获取旧值,则必须使用deleted
特殊表,因为更新可以被视为删除和插入操作。见:Using the inserted and deleted Tables。所以你的选择应该看起来像(未经测试):
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