Sqlserver——日常维护——日志表的创建

发布时间:2025-01-05 22:47

创建日常趣事日志,保持生活的记录和回忆。 #生活乐趣# #日常生活趣事# #每日生活新鲜事# #日常趣事集锦#

最新推荐文章于 2024-10-19 09:00:00 发布

志向数据库架构师的初级DBA 于 2018-07-05 08:43:09 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    昨天刚好给一个日常使用频率很高的一个重要表单做了日志,下面简单写一下日志表单的创建思路:

1、首先明确日志表的结构,需要哪些字段,哪些是基本应该需要的提示,

    一般而言基本包括:

People(操作者)、

Date(操作时间)、

OperationType(操作类型:插入、删除、更新)、

Object(操作对象:对哪个表单进行的操作)、

OldValue(执行操作前的旧值)、

NewValue(执行操作后的新值)

可以用四个词来形容:时间、地点、人物、干什么。

基本上有了这些字段,你都可以通过查询日志表获取基本的一些信息,当然你可以进行拼接一些生活化正式化的描述作为description字段,例如:'People'在'Date'时对表'Object'执行了'OperationType'操作,这样的较口语化,生活化的描述,效果更佳;

2、表的架构有了,那么现在就看看怎么用代码实现这个效果;

这里以Update触发器为例,After 类型的Update触发器,当然了,前提都一样需要循环遍历每一行,这里就不赘述了,大致的思路如下:

(1)、如果你想记录这个表的所有字段的前后变更情况,那么就使用这种思路比如说表有3个字段
那么假设旧表的记录为:
A    B     C   
1    2     3
新表的记录为:
A    B     C
10   20    30
那么列转行的方式变成这样的结构:
旧表
A    1
B    2
C    3
新表
A    10
B     20    
C     30
然后把这两个表通过第一列关联起来,并增加一列自增长的流水号,那么得到的为:
列1  列2   列3   流水列ID
A    10    1     1(流水字段)
B     20       2     2(流水字段)
C     30    3     3(流水字段)
然后开始循环:
DECLARE @i INT =1
DECLARE @q INT =MAX(流水列ID)
DECLARE @列2的值 varchar2
DECLARE @列3的值 VARCHAR2
WHILE @i<@q
BEGIN
SELECT @列2的值=列2,@列3的值=列3 FROM 联合表 WHERE ID =@i
然后判断
IF @列2的值<>@列3的值
说明该字段发生变化,
插入日志表
END
进入下次循环
SET @i=@i+1
END

(2)、如果你只想监控表中某几个关键字段的变化情况,那么可以这样写:

if update('字段1')

begin

插入日志表

end

if update('字段2')

begin

插入日志表

end

......

依此类推,

这里的Update()是系统方法,用来判定是否进行了更新,相同的还有Insert,delete。原理都一样。

这基本就是建立日志表的思路和方法,供大家参考!

网址:Sqlserver——日常维护——日志表的创建 https://www.yuejiaxmz.com/news/view/651901

相关内容

日常维护保养时间表.docx
电子仪器仪表的日常维护
家庭生活物品收纳管理系统的设计(MyEclipse,SQLServer)
sqlserver查询语句的优化技巧
DB2 日常维护技巧,第 1 部分
浪琴手表表带日常保养指南:清洁、存储与维护技巧
一款实用免费的日志自动化分析工具
日常维护维修方案.docx
系统日常维护指导手册.doc
电脑系统的日常维护

随便看看