如何用觸發器實現記錄數據庫表和記錄更改日志的操作
作者:qinyanlu
數據庫操作中,通過設置觸發器,可以來記錄數據庫表及更改日志的信息。那么觸發器該怎么設置呢?本文主要就介紹了這一過程的觸發器的設置工作,希望能夠對您有所幫助。
在數據庫操作中,我們常常需要記錄數據庫表以及記錄更改日志等信息,以方便我們在數據庫出現錯誤時,可以及時地查看日志進行問題排查。而這些過程可以通過設置觸發器來實現的,本文主要就介紹了使用觸發器來記錄數據庫表及記錄更改日志的方法,接下來就讓我們來一起了解一下這一過程吧。
--創建觸發器
- Create TRIGGER [dbo].[triINF_OrganLog]
- ON dbo.INF_Organ
- AFTER DELETE,UPDATE
- AS
- BEGIN
- SET NOCOUNT ON;
--設置增加觸發器的表
- declare @table varchar(100)
- set @table='INF_Organ' --需要設置表名
--如果日志表不存在則生成日志表
- if object_id('Logs_'+@table) is null
- begin
- --生成日志表
- exec ('select * into Logs_'+@table+' from '+@table+' where 1<>1')
- --增加日志字段
- exec ('alter table Logs_'+@table+' add LogId int IDENTITY (1,1) NOT NULL primary key')
- exec ('alter table Logs_'+@table+' add LogType varchar(50)')
- exec ('alter table Logs_'+@table+' add LogDate datetime')
- end
--記錄日志
- select * into #deleted from deleted --修改記錄轉為為臨時表
- declare @logType varchar(50),@columns varchar(4000),@sql varchar(4000)
--獲取操作類型
- set @logType='''delete'''
- select @logType='''update''' from inserted
--組合執行語句
- select @columns=isnull(@columns+',','')+name from syscolumns where id =object_id(@table)
- set @sql='insert into dbo.Logs_'+@table+'(LogDate,LogType,'+@columns+') select getdate(),'+@logType+','+@columns+' from #deleted'
- exec(@sql)
- SET NOCOUNT OFF;
- END
關于用觸發器記錄數據庫表和記錄更改日志的知識就介紹到這里了,希望本次的介紹能夠對您有所收獲!
【編輯推薦】
責任編輯:趙鵬
來源:
CSDN博客