Sql Server触发器记录字段值更新
经常碰到客户提单说有某些字段数据异常,特别是一些反写字段,一般来讲仅通过上机操作日志很难定位到字段异常的原因,尤其是有数据库层面对字段的修复,则更难定位,此时触发器就可以派上用场,即使是后台数据库修改字段值也可以记录到日志。通过使用触发器记录字段更新日志,并结合上机操作日志和其它辅助工具(比如反写日志,业务数据日志)可以更容易的分析字段异常问题。本帖子以跟踪销售订单分录中的辅助属性字段为例写个触发器记录日志,客户可参考本帖子应用到其它单据上的某些字段。要注意的是星空公有云不支持创建触发器,私有云也不建议使用触发器去更新字段,私有云的客户使用触发器仅记录相关日志是没有问题的,创建触发器记录字段修改日志到特定表脚本如下:
-- 创建日志表,用于记录销售订单辅助属性新值,旧值 --DROP TABLE SO_AUX_LOG CREATE TABLE SO_AUX_LOG (FENTRYID INT, OLD_AUX INT, NEW_AUX INT, UP_DATE DATETIME, UP_TYPE NVARCHAR(200)); --删除触发器(如果存在的话) GO IF OBJECT_ID('LOG_AUX') <> 0 BEGIN DROP TRIGGER LOG_AUX; END -- 创建触发器 GO CREATE TRIGGER LOG_AUX ON T_SAL_ORDERENTRY FOR INSERT, UPDATE, DELETE AS IF UPDATE(FAUXPROPID) --字段更新添加 BEGIN INSERT INTO SO_AUX_LOG SELECT A.FENTRYID, B.FAUXPROPID, A.FAUXPROPID, GETDATE(), 'UPDATE\INSERT' FROM INSERTED A LEFT JOIN DELETED B ON A.FENTRYID = B.FENTRYID; END; IF EXISTS(SELECT 1 FROM DELETED) AND NOT EXISTS (SELECT 1 FROM INSERTED) --字段删除 BEGIN INSERT INTO SO_AUX_LOG SELECT A.FENTRYID, A.FAUXPROPID, B.FAUXPROPID, GETDATE(), 'DELETE' FROM DELETED A LEFT JOIN INSERTED B ON A.FENTRYID = B.FENTRYID WHERE B.FENTRYID IS NULL AND A.FAUXPROPID <> 0; END;
创建一张销售订单,录入相关辅助属性,而后修改下辅助属性,再删除相关单据,如下图1-1所示:
图1-1
辅助属性字段修改日志表查询结果如下图1-2所示:
图1-2
Sql Server触发器记录字段值更新
经常碰到客户提单说有某些字段数据异常,特别是一些反写字段,一般来讲仅通过上机操作日志很难定位到字段异常的原因,尤其是有数据库...
点击下载文档
上一篇:单据体Lambda 使用下一篇:产品组_等级品
本文2024-09-16 18:16:59发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-21130.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章