Sqlserver系列之-触发器(审批状态数据同步)

本文介绍了如何通过创建数据库触发器T_SalOrder_ApproveStatus_Syn来优化金蝶系统的二开操作,解决了在销售订单审批流程中,因多个操作按钮导致的数据同步问题。触发器在更新销售订单状态为'B'时,自动同步到生产售后同步数据临时表格,确保数据一致性。测试表明该方法稳定有效,但需注意记录触发器以便后期维护。
摘要由CSDN通过智能技术生成

1.业务场景

金蝶二开操作,在供应链-销售管理-销售订单:某一审批流节点,同步部分销售订单到生产售后同步数据临时表格。但是有一点很麻烦,因为流程审批有好几个业务领域,好几个操作按钮都可以改变销售订单的审核状态,例如:信息中心-待审批可以终止流程、终止且返审、销售订单提交“待审核”,审核按钮,反审核按钮,如果开发插件做数据同步,工作量大,而且开发的插件太多会导致后期难以管理,于是想到了触发器。

2.触发器函数

函数语句以及流程分解

create trigger T_SalOrder_ApproveStatus_Syn
on T_SAL_ORDER
for update
as
if update(FDOCUMENTSTATUS)
begin
    declare @F_ApproveStatus nvarchar(200)  --修改之后的
    declare @F_Id INT
    SELECT @F_ApproveStatus=FDOCUMENTSTATUS,@F_Id=FID  FROM INSERTED --从更新后的副本表(临时表)里面 获得要修改后的状态
    if (@F_ApproveStatus='B')
    begin 
        update dbo.T_SAL_PRODUCT_SYN set FApproveStatus=@F_ApproveStatus where FID=@F_Id
    end
end
  1. 创建触发器函数:T_SalOrder_ApproveStatus_Syn
  2. 监听表格:on T_SAL_ORDER
  3. 更新数据监听:for update
  4. 监听需要更新的字段:if update(FDOCUMENTSTATUS)
  5. 定义审核状态字段:declare @F_ApproveStatus nvarchar(200)
  6. 定义销售订单内码:declare @F_Id INT
  7. 查询触发审核状态,内码主键:SELECT @F_ApproveStatus=FDOCUMENTSTATUS,@F_Id=FID
  8. 从更新后的副本表(临时表)里面 获得要修改后的状态:FROM INSERTED
  9. 更新条件:if (@F_ApproveStatus=‘B’)
  10. 更新临时表审核状态字段:update dbo.T_SAL_PRODUCT_SYN set FApproveStatus=@F_ApproveStatus where FID=@F_Id

3.总结

  1. 可以看出来就一个触发器就能解决很复杂的业务场景。
  2. 经过测试很稳定,能稳定同步数据。
  3. 触发器一定要做好记录,不然后期出现问题很难定位。
  4. 由于是很早之前做的一个操作没有具体的操作截图记录啥的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值