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

数据库 SQL Server
数据库操作中,通过设置触发器,可以来记录数据库表及更改日志的信息。那么触发器该怎么设置呢?本文主要就介绍了这一过程的触发器的设置工作,希望能够对您有所帮助。

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

--创建触发器

  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 

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

【编辑推荐】

  1. Oracle数据库账号频繁被锁定的原因排查
  2. Oracle数据库如何创建虚拟列和复合触发器
  3. MySQL数据库目录结构及常用命令的使用总结篇
  4. 以MySQL为例介绍数据库测试工具dbmonster的使用
  5. 通过引进SQL Server 2000驱动的jar包连接SQL服务器
责任编辑:赵鹏 来源: CSDN博客
相关推荐

2010-04-15 15:32:59

Oracle操作日志

2010-09-01 16:40:00

SQL删除触发器

2011-08-04 11:00:35

Oracle数据库虚拟列复合触发器

2011-04-02 15:05:23

触发器数据库

2011-08-10 16:46:01

DB2数据库触发器

2010-05-27 17:16:20

MySQL数据库

2010-07-07 17:05:39

SQL Server数

2010-07-19 09:50:58

SQL Server2

2011-03-03 14:04:48

Oracle数据库触发器

2019-09-22 21:34:59

数据库平滑变更表结构

2019-10-22 07:50:45

SqlServer数据库触发器

2017-06-29 14:35:59

Oracle触发器

2010-09-13 16:46:10

SQL Server触

2010-05-18 14:35:06

MySQL触发器

2019-04-30 15:28:46

数据库存储过程触发器

2010-06-30 09:36:25

SQL Server

2011-04-01 16:35:09

SQL Server数触发器

2010-05-28 10:48:52

MySQL数据库

2010-06-01 17:45:57

MySQL数据库

2018-09-11 17:13:23

MySQ数据库重复记录
点赞
收藏

51CTO技术栈公众号