本帖最后由 异常变量 于 2023-5-27 23:52 编辑
等了这么多天 也没有完美的解决方案,我还是补充一个 我自己琢磨出来的方案吧:
1、在sqlserver库存表(表名:csh_tongbu:图1)中增加2个列字段,一个ts数据类型为timestamp(时间戳),时间戳为唯一值,只要数据更新,ts就会更新,但timestamp是无法同步到活字格作为更新判断依据,所以要在csh_tongbu表中再增加一个字段tts,数据类型为bigint,把ts赋值给bigint类型的tts字段,tts是可以同步到活字格的,然后再csh_tongbu表下创建一个触发器,当csh_tongbu表数据发生变化时,将变化后的ts赋值给tts,tts也是数据变化后的唯一值
create trigger ceshi_tr_tongbu
on csh_tongbu
after insert,update
as
begin
declare @ts timestamp
select @ts=ts from inserted
update csh_tongbu set tts=@ts from csh_tongbu t join inserted on t.code in (inserted.code)
end
图1
2、在活字格里创建一个内置表,表名post_tongbu
3、创建定时任务,将外联表csh_tongbu定时1分钟更新到post_tongbu表,命令条件如下:
设置变量:erp_tts 关联外联表csh_tongbu,设置变量post_tts关联post_tongbu表,设置条件语句如下图:
大致意思是,如果外联表csh_tongbu中的tts字段在内置表里没有,则执行增加数据,如果有(用不变的字段判断,例如code:商品编码)且tts不一致,则执行更新内置表中对应的数据
4、然后根据内置表post_tongbu触发更新和新增任务计划,像第三方商城发送数据
之所以写的这么详细,只是想让接近小白的朋友少走点弯路,大神勿喷,如有更好的方案,欢迎斧正!
虽然还是没有达到实时变更,但实现了 只触发变更数据的协同,且将数据高频率巡查的任务放在了活字格里,对ERP及商城的数据交互并没有造成太多的负担
|