触发器记录销售订单锁库/预留数量原创
4人赞赏了该文章
97次浏览
编辑于2024年09月18日 16:07:21
销售订单上锁库/预留数量经常与库存锁库列表或者预留关系查询里看到的结果不一致,历史版本可能存在bug,特别是在有销售订单部分预留到采购订单的业务场景,此问题的分析也比较难,因为远程客户重新做单时又不重现,建议如果经常出现此问题,可以使用触发器记录下日志,后续再结合上机操作日志来分析问题。以下为SQL Server下创建字段更新日志的步骤:
1,-- 创建日志表,用于记录销售订单锁库数量新值,旧值
--DROP TABLE SO_LOCKQTY_LOG CREATE TABLE SO_LOCKQTY_LOG (FENTRYID INT, OLD_LOCKQTY DECIMAL, NEW_LOCKQTY DECIMAL, UP_DATE DATETIME, UP_TYPE NVARCHAR(200));
2,--删除触发器(如果存在的话)
GO IF OBJECT_ID('LOG_LOCKQTY') <> 0 BEGIN DROP TRIGGER LOG_LOCKQTY; END
3,-- 创建触发器
GO CREATE TRIGGER LOG_LOCKQTY ON T_SAL_ORDERENTRY FOR INSERT, UPDATE, DELETE AS IF UPDATE(FLOCKQTY) --字段更新添加 BEGIN INSERT INTO SO_LOCKQTY_LOG SELECT A.FENTRYID, B.FLOCKQTY, A.FLOCKQTY, 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_LOCKQTY_LOG SELECT A.FENTRYID, A.FLOCKQTY, B.FLOCKQTY, GETDATE(), 'DELETE' FROM DELETED A LEFT JOIN INSERTED B ON A.FENTRYID = B.FENTRYID WHERE B.FENTRYID IS NULL AND A.FLOCKQTY <> 0; END;
下图1-1为'锁库/预留数量'字段更新日志示意图
图1-1
赞 4
4人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
1人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读