久久机这里只有精品,国产69精品一区二区亚洲孕妇,91精品国产综合久久婷婷香蕉,午夜久久久久久电影

最新活動:電腦PC端+手機端+微網站+自適應網頁多模板選擇-建站388元起價!!!
當前位置:主頁 > 網站建設 > 判斷字段是否被更新 新舊數據寫入Audit Log表中建

判斷字段是否被更新 新舊數據寫入Audit Log表中建

時間:2023-05-21 19:05:21 閱讀: 文章分類: 網站建設 作者: 網站編輯員

導讀:1建站知識客戶要求,要對一個敏感數據表進行Audit跟蹤。如果記錄被更新時,要把舊新保存起來,是誰更改了記錄,什么時候更建設網站公司seo網站優化。

建設網站公司seo網站優化Insus.NET解決這個問題,只有創建另外一個表,將存儲用戶決定要跟蹤的表,以及這個表中需要跟蹤的字段。 還要創建另外一個表[Audit],就是存儲跟蹤記錄的表:

復制代碼 代碼如下:

Audit SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Audit]( [Audit_nbr] [int] IDENTITY(1,1) NOT NULL, [AuditType] [char](1) NOT NULL, [TableName] [nvarchar](128) NOT NULL, [FieldName] [nvarchar](128) NULL, [OldValue] [nvarchar](4000) NULL, [NewVal網站建設哪家好ue] [nvarchar](4000) NULL, [UserName] [nvarchar](128) NULL, [CreateDate] [datetime] NOT NULL, PRIMARY KEY CLUSTERED ( [Audit_nbr] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO ALTER TABLE [dbo].[Audit] WITH CHECK ADD CHECK (([AuditType]='D' OR [AuditType]='U' OR [AuditType]='I')) GO ALTER TABLE [dbo].[Audit] ADD DEFAULT (getdate()) FOR [CreateDate] GO

解決是誰更新數據,是使用這個方法:在SQL觸發器或存儲過程中獲取在程序登錄的用戶 接下來,為跟蹤表寫一個更新Trigger觸發器。 在觸發器中訪問INSERTED或DELETED的內部臨時觸發表,會得一個異常invalid object name 'inserted' 或是invalid object name 'deleted' ,解決此問題,可以參考這篇: EXEC(EXECUTE)函數訪問INSERTED或DELETED的內部臨時觸發表 下面為表更新觸發器(部分),有注釋:

復制代碼 代碼如下:

--@N和@O兩個變量,一個存儲更新數據值,一個為原有數據值 DECLARE建設網站 @sql NVARCHAR(MAX),@N DECIMAL(18,0),@O DECIMAL(18,0) --@I變量是用戶需要跟蹤的字段 SET @sql = N'SELECT @N = ['+ CONVERT(NVARCHAR(MAX),@I) +'] FROM #inserted' --執行動態SQL語句。 EXECUTE sp_executesql @sql, N'@N DECIMAL(18,0) OUTPUT', @N OUTPUT; --下面SQL代碼,是從deleted表中獲取原來數據值。 SET @sql = N'SELECT @O = ['+ CONVERT(NVARCHAR(MAX),@I) +'] FROM #deleted' EXECUTE sp_executesql @sql, N'@O DECIMAL(18,0) OUTPUT', @O OUTPUT; --對比兩個數據值,更新值與原網站建設制作有值,如果不一樣,把數據插入Audit Log表中。 IF (ISNULL(@N,0) <> ISNULL(@O,0)) EXECUTE [dbo].[usp_Audit_Insert] 'U','<tableName>','<fieldName>',@O,@N,@UserName

上面代碼還有一個存儲過程,原因是如果多表或是一個表有更新或是刪除需要把跟蹤的數據插入Audit Log表中時,為了更好維護與代碼冗余,因此把插入Audit Log表的過程,寫成一個存儲過程:

復制代碼 代碼如下:

usp_Audit_Insert SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[usp_Audit_Insert] ( @AuditType [char](1), @TableName [nvarchar](128), @FieldName [nvarchar](128), @OldValue [nvarchar](4000), @NewValue [nvarchar](4000), @UserName [nvarchar](128) ) AS INSERT INTO [dbo].[Audit] ([AuditType],[TableName],[FieldName],[OldValue],[NewValue],[UserName]) VALUES (@AuditType,@TableName,@FieldName,@OldValue,@NewValue,@UserName)

關鍵詞標簽: 字段 新舊

聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-21 ,文章判斷字段是否被更新 新舊數據寫入Audit Log表中建主要講述字段,新舊,判斷字段是否被更新 新舊數據寫入A網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_3791.html

我的IDC 網站建設技術SEOUC.COM
專注網站建設,SEO優化,小程序設計制作搭建開發定制網站等,數千家網站定制開發案例,網站推廣技術服務。
  • 5000+合作客服
  • 8年從業經驗
  • 150+覆蓋行業
  • 最新熱門源碼技術文章

    主站蜘蛛池模板: 余姚市| 犍为县| 眉山市| 曲松县| 金山区| 突泉县| 靖州| 玛曲县| 河池市| 阿城市| 大关县| 阜南县| 林周县| 洪泽县| 札达县| 浪卡子县| 东海县| 岳池县| 遂宁市| 乌兰县| 广灵县| 兴城市| 津市市| 锦屏县| 新竹市| 方正县| 塘沽区| 三江| 延边| 南宁市| 武穴市| 鲁甸县| 封丘县| 吉安市| 南平市| 景泰县| 靖州| 界首市| 西林县| 南乐县| 西安市|