查看: 11115|回复: 19

业务流水号的唯一连续性,如何实现?

[复制链接]
论坛徽章:
7
奥运会纪念徽章:水球
日期:2008-08-04 09:14:15CTO参与奖
日期:2009-01-15 11:42:46生肖徽章2007版:鼠
日期:2009-03-10 21:12:512010广州亚运会纪念徽章:皮划艇
日期:2010-11-11 17:57:242010广州亚运会纪念徽章:板球
日期:2010-11-11 17:57:32鲜花蛋
日期:2011-12-09 20:17:34ITPUB社区OCM联盟徽章
日期:2015-08-14 09:45:11
跳转到指定楼层
1#
发表于 2008-7-24 16:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
业务流水号=当前日期(YYYYMMDD)+顺序号
我目前的实现方法如下:
每增加一条业务流水前,先到库表中查询当天的最大业务流水号,然后当前最大业务流水号=当天最大业务流水号+1

这样做存在一个问题,并发增加业务流水时,会报违反主键约束的错误

如何才能保证业务流水号的唯一性且连续性啊???
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
2#
发表于 2008-7-24 16:54 | 只看该作者
用sequence!

使用道具 举报

回复
论坛徽章:
4
奥运会纪念徽章:柔道
日期:2008-07-04 17:49:032009新春纪念徽章
日期:2009-01-04 14:52:282010新春纪念徽章
日期:2010-03-01 11:08:27
3#
发表于 2008-7-24 16:59 | 只看该作者
楼上正解。

当前日期(YYYYMMDD)+sequence

使用道具 举报

回复
论坛徽章:
9607
土豪章
日期:2013-12-31 14:11:39土豪章
日期:2013-12-31 14:11:39阿森纳
日期:2013-06-03 17:00:31阿森纳
日期:2013-10-11 09:27:58法拉利
日期:2013-12-27 15:20:30林肯
日期:2013-12-27 15:19:09法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30
4#
发表于 2008-7-24 17:03 | 只看该作者
原帖由 bell6248 于 2008-7-24 16:54 发表
用sequence!


恩,是的,而且是要在提交的时候取号,

使用道具 举报

回复
论坛徽章:
7
奥运会纪念徽章:水球
日期:2008-08-04 09:14:15CTO参与奖
日期:2009-01-15 11:42:46生肖徽章2007版:鼠
日期:2009-03-10 21:12:512010广州亚运会纪念徽章:皮划艇
日期:2010-11-11 17:57:242010广州亚运会纪念徽章:板球
日期:2010-11-11 17:57:32鲜花蛋
日期:2011-12-09 20:17:34ITPUB社区OCM联盟徽章
日期:2015-08-14 09:45:11
5#
 楼主| 发表于 2008-7-24 17:06 | 只看该作者
用SEQUENCE会有问题,比如我的业务流水号格式是YYYYMMDDXXX
其中XXX是顺序号,如果SEQUENCE值超过了3位数,怎么办?

使用道具 举报

回复
论坛徽章:
9607
土豪章
日期:2013-12-31 14:11:39土豪章
日期:2013-12-31 14:11:39阿森纳
日期:2013-06-03 17:00:31阿森纳
日期:2013-10-11 09:27:58法拉利
日期:2013-12-27 15:20:30林肯
日期:2013-12-27 15:19:09法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30
6#
发表于 2008-7-24 17:09 | 只看该作者
原帖由 itbean 于 2008-7-24 17:06 发表
用SEQUENCE会有问题,比如我的业务流水号格式是YYYYMMDDXXX
其中XXX是顺序号,如果SEQUENCE值超过了3位数,怎么办?


看你实际了啊,如果3位不够用那你就多几位阿

使用道具 举报

回复
论坛徽章:
27
设计板块每日发贴之星
日期:2007-08-24 01:05:17奥运会纪念徽章:拳击
日期:2012-06-25 14:17:112012新春纪念徽章
日期:2012-01-04 11:49:54生肖徽章2007版:龙
日期:2009-04-07 18:18:35生肖徽章2007版:鸡
日期:2008-10-14 14:14:30生肖徽章2007版:龙
日期:2008-10-08 21:22:20铁扇公主
日期:2008-09-28 11:20:58授权会员
日期:2008-09-05 13:30:44ITPUB元老
日期:2008-09-05 13:30:31奥运会纪念徽章:摔跤
日期:2008-07-26 08:05:05
7#
发表于 2008-7-24 17:49 | 只看该作者
每增加一条业务流水前,先到库表中查询当天的最大业务流水号,然后当前最大业务流水号=当天最大业务流水号+1

应该在提交数据时再去取流水号,且要用事务来进行,保证数据完整性

使用道具 举报

回复
论坛徽章:
23
生肖徽章2007版:蛇
日期:2008-01-02 17:35:53生肖徽章2007版:狗
日期:2009-03-10 21:17:06生肖徽章2007版:虎
日期:2009-03-10 21:20:05生肖徽章2007版:龙
日期:2009-03-10 21:27:46生肖徽章2007版:蛇
日期:2009-03-10 21:34:302009日食纪念
日期:2009-07-22 09:30:00ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:21:01
8#
发表于 2008-7-24 18:17 | 只看该作者
同意LS

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2014-11-14 06:00:14
9#
发表于 2008-7-24 20:49 | 只看该作者
to_char(tunck(sysdata))||sequence

使用道具 举报

回复
论坛徽章:
24
生肖徽章:狗
日期:2006-09-07 10:14:43数据库板块每日发贴之星
日期:2008-07-26 01:02:20生肖徽章2007版:兔
日期:2008-10-13 11:10:11奥运会纪念徽章:铁人三项
日期:2008-10-24 13:27:21开发板块每日发贴之星
日期:2008-12-27 01:01:09生肖徽章2007版:马
日期:2009-11-18 10:45:032010新春纪念徽章
日期:2010-03-01 11:21:02ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ERP板块每日发贴之星
日期:2011-05-18 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
10#
发表于 2008-7-24 20:50 | 只看该作者
能否用java处理?如果可以容忍断号的话,可以用sequence

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表