mssql sqlserver 使用触发器判断字段是否修改,并写入日志的方法分享


摘要:
下文讲述使用触发器判断字段是否被修改,如果修改放入日志表的方法分享,如下所示:
实验环境:sql server 2008 r2


例:
有一张客户信息表,下文讲述记载sqlserver数据表中字段修改的信息。

  
    create table [maomaoCustom]
     (keyId int identity(1,1),
      info varchar(300)
    )
    go
    
    create table [maomaoCustomLog]
     (keyId int identity(1,1),
      info1 varchar(300),
      info2 varchar(300)
    )
    go
    
    /*
    新建触发器,记录数据修改日志  
    */
   create trigger [tr_updateMaoMaoLog] on maomaoCustom
     after update  
   as 
   
    declare @updateFlag char(1)
    
     ----检测列数据是否被修改过  
    select @updateFlag = case when a.info=b.info then 0 else 1 end 
      from deleted a left join inserted b on a.id = b.id
     if    @updateFlag >0  
     begin
        insert into maomaoCustomLog(info1,info2)
         select   
             a.info,b.info   
          from deleted a left join inserted b on a.id = b.id
     end
  go

    
   go
   truncate table  [maomaoCustom]
   drop       table  [maomaoCustom]
  go
  truncate  table   maomaoCustomLog
  drop       table   maomaoCustomLog


注意事项:
deleted中存储的是修改前的数据
inserted中存储的是修改后的数据