记录INSERT,UPDATE或DELETE语句

本文介绍了一种使用Trigger来记录SQL变更的方法,通过建立特定的表结构和触发器,能够自动记录下所有对指定表进行的INSERT、UPDATE或DELETE操作及其执行者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表的数据有变化,想知道是谁执行什么样的SQL语句,可以通过Trigger实现,相关执行SQL的信息可以存放到表里。

首先,建一张Table:

CREATE TABLE [dbo].[LOGR](
	[USRNAM] [varchar](50) NULL,
	[STATMT] [varchar](max) NULL,
	[UPDDAT] [datetime] NULL,
	[TBLNAM] [varchar](50) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

 然后,在需要记录的表上创建Trigger,以便记录INSERT,UPDATE或DELETE语句:

CREATE TRIGGER [dbo].[Trigger_Name] ON [dbo].[Table_Name] 
FOR INSERT, UPDATE, DELETE 
AS

DECLARE @CLIENT AS VARCHAR(50)
DECLARE @DATETIME AS DATETIME
DECLARE @USERNAME AS VARCHAR(50)
DECLARE @STATMT  AS VARCHAR(max)
DECLARE @strSQL AS VARCHAR(100)

SET @CLIENT = HOST_NAME()
SET @DATETIME = GETDATE()
SET @strSQL='DBCC INPUTBUFFER('+CAST(@@SPID AS VARCHAR(20))+')'

CREATE TABLE #STATEMENT (C1 VARCHAR(50),C2 VARCHAR(50),C3 VARCHAR(500))
INSERT INTO #STATEMENT  EXEC(@strSQL)

SELECT @STATMT=C3 FROM #STATEMENT

INSERT INTO LOGR(USRNAM,STATMT,UPDDAT,TBLNAM) VALUES(@CLIENT,@STATMT,@DATETIME,'Table_Name')

效果如下图,相关操作均记录在表里:


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值