哇哈哈哈。。。。。解决了票据号不重号不跳号的难题

software_artisan 2014-11-14 12:00:02
这个问题的难点主要是多任务机制下,在很短的时间段内多个客户端请求了流水号,但因某种原因其中某个客户端又放弃该号码的情况下会出现跳号现象。例如:
A:SN00001
B:SN00002
C:SN00003
结果B并没有使用SN00002这个号,又重新获取了新的流水号:SN00004。那么流水号SN00002就被跳过了,在比较严格的单据号管理体系中,这种情况是不被允许的。

这个问题曾经困扰过很多客户,现在本人接手,使用存储过程很简单就完成了,念头果然通达!
...全文
389 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcqm8888 2015-04-05
  • 打赏
  • 举报
回复
解决了就好,你很棒!
Tiger_Zhao 2014-11-19
  • 打赏
  • 举报
回复
主表用自增ID做主键,子表的外键就和票据号没关系。
插入时票据号为空,打印时分配,更新一下票据号。
谁规定打印时不能做UPDATE的?
software_artisan 2014-11-19
  • 打赏
  • 举报
回复
呃,我们的业务流程是打印票据时才分配票据号,因为一旦票据号生成后,就不能删除业务记录,只能作废。但这个时候其实只有系统中有数据,是可以删除掉的,所以我们也允许用户删除仅仅只是新建的业务(到下一步就只能作废了)。所以没法在保存业务数据的时候生成流水号。。。。。 对sql了解不深,也就会增删改查。。。。我不太明白怎么用存储过程保存一笔有3级子表的业务数据?明细数据用xml传参?
Tiger_Zhao 2014-11-18
  • 打赏
  • 举报
回复
不觉得用存储过程其实更方便吗?
客户端根本不需要预先生成流水号,调用存储过程保存,由存储过程来生成流水号即可。
总之原则是流水号只在真正插入时生成,就不会有断号的问题了。
software_artisan 2014-11-18
  • 打赏
  • 举报
回复
嗯,是一个比较方便的实现思路。但使用触发器的话,可维护性比较差。每种业务都需要在相应的表里面加上触发器,这对于不了解系统由来的人来说,很难维护。我用存储过程主要是为了插入流水记录并绑定业务ID,仅仅生成票据号的话,标量值函数使用更加方便。
Tiger_Zhao 2014-11-18
  • 打赏
  • 举报
回复
和业务没关系。
既然你原先就可以按规则生成流水号,现在又没有更改生成规则。
只是把调用生成方法的时点更改了一下,从预先生成流水号变成插入触发器时生成,仅此而已。
software_artisan 2014-11-17
  • 打赏
  • 举报
回复
不一定是最好的,就目前来说,我觉得是最简单有效的。
software_artisan 2014-11-17
  • 打赏
  • 举报
回复
没这么简单呀,不同的业务使用一套独立的流水号不用说,相同的业务不同的类型也要独立的流水号。有的业务一年重置一次,有的一个月重置一次。这要求流水号需要按规则生成,不是简单分一个就行了。
Tiger_Zhao 2014-11-17
  • 打赏
  • 举报
回复
哪用得着这么复杂(空间上),先申请临时的流水号(比如T000001、T000002、T000003)保证各客户端号码唯一。
用INSERT触发器将临时流水号更改为正式流水号,这样只有正式递交的记录才会分配正式流水号,就不会有正式流水号被丢弃。
不知道你的业务号是否唯一,如果唯一可以直接当作临时流水号用。
cnmhx 2014-11-16
  • 打赏
  • 举报
回复
这个,这个,肯定是最好的解决办法吗?
software_artisan 2014-11-15
  • 打赏
  • 举报
回复
引用 2 楼 Smile_Tiger 的回复:
能说说你的思路吗
思路其实很简单,就是申请流水码的时候传入业务号作为参数,这样生成的流水码就可以和业务号绑定了。如果流水码生成成功,但使用失败,那么下次申请时就可以不再生成新的流水码,而是找回已经生成且和该业务号绑定的流水码,这样就不会产生跳号现象了。 当然这个解决方案必须记录每一个已生成的流水码,则会让流水码记录表无限地增长。我的解决办法很粗暴,就是每月删除一次半年以前的记录,这样,记录数量可以保持在一个不会影响性能的水平之下。
Smile_Tiger 2014-11-15
  • 打赏
  • 举报
回复
能说说你的思路吗
欢乐的小猪 2014-11-14
  • 打赏
  • 举报
回复
恭喜

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧