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

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. 由于是很早之前做的一个操作没有具体的操作截图记录啥的。
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页