如何用触发器实现记录数据库表和记录更改日志的操作

数据库操作中,我们常常需要记录数据库表以及记录更改日志等信息,以方便我们在数据库出现错误时,可以及时地查看日志进行问题排查。而这些过程可以通过设置触发器来实现的,本文主要就介绍了使用触发器来记录数据库表及记录更改日志的方法,接下来就让我们来一起了解一下这一过程吧。

创新互联建站-专业网站定制、快速模板网站建设、高性价比革吉网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式革吉网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖革吉地区。费用合理售后完善,十载实体公司更值得信赖。

--创建触发器

 
 
 
  1. Create TRIGGER [dbo].[triINF_OrganLog]  
  2.  
  3. ON  dbo.INF_Organ  
  4.  
  5. AFTER DELETE,UPDATE  
  6.  
  7. AS   
  8.  
  9. BEGIN  
  10.  
  11. SET NOCOUNT ON;  

--设置增加触发器的表

 
 
 
  1. declare @table varchar(100)  
  2.  
  3. set @table='INF_Organ' --需要设置表名 

--如果日志表不存在则生成日志表

 
 
 
  1. if object_id('Logs_'+@table) is null    
  2.  
  3. begin   
  4.  
  5. --生成日志表  
  6.  
  7. exec ('select * into Logs_'+@table+' from '+@table+' where 1<>1')  
  8.  
  9. --增加日志字段  
  10.  
  11. exec ('alter table Logs_'+@table+' add LogId int IDENTITY (1,1) NOT NULL primary key')    
  12.  
  13. exec ('alter table Logs_'+@table+' add LogType varchar(50)')      
  14.  
  15. exec ('alter table Logs_'+@table+' add LogDate datetime')    
  16.  
  17. end 

--记录日志

 
 
 
  1. select * into #deleted from deleted --修改记录转为为临时表  
  2.  
  3. declare @logType varchar(50),@columns varchar(4000),@sql varchar(4000) 

--获取操作类型

 
 
 
  1. set @logType='''delete'''  
  2.  
  3. select @logType='''update''' from inserted 

--组合执行语句

 
 
 
  1. select @columns=isnull(@columns+',','')+name from syscolumns where id =object_id(@table)   
  2.  
  3. set @sql='insert into dbo.Logs_'+@table+'(LogDate,LogType,'+@columns+') select getdate(),'+@logType+','+@columns+' from #deleted'  
  4.  
  5. exec(@sql)  
  6.  
  7. SET NOCOUNT OFF;   
  8.  
  9. END 

关于用触发器记录数据库表和记录更改日志的知识就介绍到这里了,希望本次的介绍能够对您有所收获!

网页题目:如何用触发器实现记录数据库表和记录更改日志的操作
分享地址:http://www.shufengxianlan.com/qtweb/news31/266731.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联