Sqlserver 觸發器 記錄刪除 與修改
阿新 • • 發佈:2020-12-12
最近專案裡發生一些問題 發現數據無故被刪除 只能作一個觸發器來記錄SQL
需要 一個觸發器 一個log表
log表
CREATE TABLE [dbo].[LOGR](
[USERID] [varchar](50) NULL,
[STRSQL] [varchar](max) NULL,
[DATE] [varchar](8) NULL,
[TIME] [varchar](8) NULL,
[TABLNM] [nvarchar](50) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
觸發器
CREATE TRIGGER [dbo].[KNMT_LOG] ON [dbo].[PATIENT] FOR UPDATE, DELETE AS DECLARE @CLIENT AS VARCHAR(50) DECLARE @DATE AS VARCHAR(8) DECLARE @TIME AS VARCHAR(8) DECLARE @USERNAME AS VARCHAR(50) DECLARE @STATMT AS VARCHAR(max) DECLARE @strSQL AS VARCHAR(100) SET @CLIENT = HOST_NAME() SET @DATE = CONVERT(VARCHAR(8),GETDATE(),112) SET @TIME =REPLACE(CONVERT(VARCHAR(8),GETDATE(),108),':','') SET @strSQL='DBCC INPUTBUFFER('+CAST(@@SPID AS VARCHAR(50))+')' CREATE TABLE #STATEMENT (C1 VARCHAR(50),C2 VARCHAR(50),C3 VARCHAR(5000)) INSERT INTO #STATEMENT EXEC(@strSQL) SELECT @STATMT=C3 FROM #STATEMENT INSERT INTO LOGR(USERID,STRSQL,DATE,TIME,TABLNM) VALUES(@CLIENT,@STATMT,@DATE,@TIME,'PATIENT')