mssql sqlserver触发器中,如何获取修改前的值(获取修改前的值的方法)


我们熟知,对数据表,进行数据修改操作时,
分为两个步骤
第一步删除数据
第二步插入数据
那么我们获取数据前的方法就可以通过 获取delete中的值
获取修改后的值,可以通过inserted中的值


应用场景:
采用触发器获取修改前的值,可以应用于数据修改日志上


例:

create table A(keyId int,info1 varchar(20))
go
insert into A values(1,'a')
insert into A values(2,'b')
insert into A values(3,'C')
insert into A values(4,'d')
insert into A values(5,'e')
insert into A values(6,'f')
go
create trigger tr_a_test on a
after update 
as
begin
 declare @keyId_old int ,@info1_old varchar(20)
 declare @keyId_new int ,@info1_new varchar(20)
  
  ---获取修改前的值
  select @keyId_old=keyId,@info1_old =info1 from deleted  
  ---获取修改后的值
  select @keyId_new=keyId,@info1_new =info1 from inserted    
  ----打印获取的相关值   
   print '-------修改前的值------'   
   print @keyId_old
   print @info1_old   
   print '-------修改后的值------'
   print @keyId_new
   print @info1_new   
end
go

update A set info1='testwwwtwt',keyId=108 where keyId =2 
go
drop trigger  tr_a_test
go
truncate table A
drop table A 
go