日期:2014-05-17  浏览次数:21094 次

关于生成唯一订单号
我想要生成唯一订单号 格式为:
yyyymmdd0001
...
...
...
yyyymmdd0100

要求订单号的后面几位号码是有顺序的. 每一天都是从0001开始. 并发数高的情况下不能出来重复..


大家有没有比较好的解决方案吗?


唯一订单号

------解决方案--------------------
yyyymmdd + 线程id + 编号 这样绝对不会因为“并发而重复”

如果你是群集,就用yyyymmdd + 机器id + 线程id + 编号
------解决方案--------------------
楼主会来这问,估计也不会是啥大型的系统,随便在代码加个锁就行。
------解决方案--------------------
建一个临时表,用自增ID,然后每天重新建,插入记录时就插入这个临时表,取得ID,与当前日期组合即可。做个存储过程就比较简单了。

当然通过计算也可以,在上次的最大ID上加1就行了。

如果后面的几位数字没有要求,即不需要每天从1开始,那也可以直接用自增字段和时间组合,两个字段,输出时合并。
------解决方案--------------------
我通常是在保存前判断一下最大的流水号,再加1,生成新单号,保存。
如果怕重复,可以设成主键或唯一索引,就可以了。
当然,我们的数据量不是太大,所以没碰到过什么问题。

之前听说过,单号用一个表来保存,每次保存前,都锁表,读单号,加1,再保存回表中,解锁表。
------解决方案--------------------
不知道LZ是什么系统的订单号,
如果是电商方面的话,个人认为从订单号就能看出日期、地区、产品类型 等这几个信息