思路来源于该博客
--SqlServer Update触发器判断某个字段的值是否已经更改
https://blog.youkuaiyun.com/zhangshufei8001/article/details/51568834
create trigger [tig_update] on 表名
after update
as
declare @id int,
@upflag int
begin
select @upflag = case when a.列名=b.列名 then 0 else 1 end, @id=a.id from deleted a left join inserted b on a.id = b.id
if (@upflag>0)
update 子表名 set lasttime = GETDATE() where pid = @id
end
对于该触发器我的理解是:
定义了两个变量 id (更新记录的Id) 、uplfag (更新记录数-用来判断更新记录是否成功)
我觉得博主的博客这句话说的相当精髓:
解释一下,deleted表中存的是修改前的值,inserted中存的是修改后的值,这样是不是更好呢!
所以我要实现的需求 代码如下:
create trigger [tig_update] on 表名
after update
as
declare @id int,
@upflag int,
@nid int
begin
select @upflag = case when a.列名=b.列名 then 0 else 1 end, @id=a.id from deleted a left join inserted b on a.id = b.id
if (@upflag>0)
update 子表名 set lasttime = GETDATE() where pid = @id
end