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
- 创建触发器函数:T_SalOrder_ApproveStatus_Syn
- 监听表格:on T_SAL_ORDER
- 更新数据监听:for update
- 监听需要更新的字段:if update(FDOCUMENTSTATUS)
- 定义审核状态字段:declare @F_ApproveStatus nvarchar(200)
- 定义销售订单内码:declare @F_Id INT
- 查询触发审核状态,内码主键:SELECT @F_ApproveStatus=FDOCUMENTSTATUS,@F_Id=FID
- 从更新后的副本表(临时表)里面 获得要修改后的状态:FROM INSERTED
- 更新条件:if (@F_ApproveStatus=‘B’)
- 更新临时表审核状态字段:update dbo.T_SAL_PRODUCT_SYN set FApproveStatus=@F_ApproveStatus where FID=@F_Id
3.总结
- 可以看出来就一个触发器就能解决很复杂的业务场景。
- 经过测试很稳定,能稳定同步数据。
- 触发器一定要做好记录,不然后期出现问题很难定位。
- 由于是很早之前做的一个操作没有具体的操作截图记录啥的。