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
簡單利用觸發器監控表記錄的更改
監控資料庫使用者行為可以利用資料庫審計,logminer日誌挖掘,觸發器等手段,但前兩者操作起來比較麻煩,利用觸發器可簡單的滿足一些特殊的監控需求。以下是利用觸發器監控表記錄被誰更改的例子 顯示授權給所有使用者查詢這兩個檢視 grant select on sys.v session to publ...
mysql 用觸發器記錄操作
mysql 不能在乙個觸發器中進行insert,update,delete操作,需分別建三個觸發器 insert觸發器 delimiter create trigger tri city insert after insert on t xfw city foreach rowbegin inser...
MYSQL對錶建立修改本表記錄觸發器之後報錯
記錄下在mysql中對剛剛insert的資料進行修改遇見的錯誤。drop trigger ifdelimiter create insert each rowbegin set new.is dele 1 where id new.id end delimiter 執行指令碼正常能通過,但是在執行i...