
系统插入数据的时候 会给数据一个 order_number 字段来保存这个订单的编号
编号是自增的 1 , 2 , 3 , 4 这样自增
每插入一个订单都需要查询出最新插入订单,然后获取这个 order_number 在这个基础上加上 1
如果同一个时间插入几条数据的时候, order_number 字段会出现重复。
麻烦大家给个解决思路。
1 kevin1852 2016 年 8 月 15 日 建表的时候建成自增字段,自己自增干嘛? |
2 dear123 2016 年 8 月 15 日 1# 说的对 |
3 gdsing 2016 年 8 月 15 日 有自增字段放着不用,这不是没事找事做吗? |
4 0915240 2016 年 8 月 15 日 +1 楼 自增字段 |
5 kisssu 2016 年 8 月 15 日 via Android 加唯一索引,主键和 order number 建立唯一索引 |
6 awanabe 2016 年 8 月 15 日 做个 seq 序号生成器好了, 如果是分布式的不能做自增主键的话 |
nbsp; 7 murmur 2016 年 8 月 15 日 每天都是从零开始 这点如果不允许用 mysql 自增或者 oracle 的序列的话 去干死写需求的 订单号写成 20160815xxxxxxx 不就完了 非得从 1 开始? |
8 murmur 2016 年 8 月 15 日 有点看错了 ( 1 )订单号是不是必须从 1 开始 不是的话就用一个自增序列 mod 一个大数就可以了 需求什么的 编号什么的是可以商量的 ( 2 ) oracle sequence 爽啊 这个可以重置序列的 ( 3 )分布式的主键生成器 自己弄一个 java 的话好像有 atomic integer |
9 BOYPT 2016 年 8 月 15 日 记录当天的 start_id ,然后用自增 key 减去这个 id 不就有 order_id 了,有这么复杂么 |
10 chaegumi 2016 年 8 月 15 日 mysql insert delayed into |
11 3dwelcome 2016 年 8 月 15 日 自增+LAST_INSERT_ID() |
12 SoloCompany 2016 年 8 月 16 日 1. 数据库有锁 2. 谁说 unique key 不能解决重复问题的,起码你加一个 order_date, order_number 的 unique key 就能解决重复问题(假如你并发没控制好的话就直接数据库出错) 3. mysql 支持复合 key 的 auto_increment, 但仅限于 MyISAM ,如果你的数据库场景可以使用 MyISAM 的话,这是一个最简单的解决方案 |
13 Mirana 2016 年 8 月 16 日 弄个分布式锁,或者弄个发号器 |
14 songw123 2016 年 8 月 16 日 做个序号生成器吧,完全自增也不太靠谱, order_number 如果是订单 ID 的话,是有业务意义的,直接自增会带来安全隐患 |
15 beneo 2016 年 8 月 16 日 redis 来个自增数 num ,然后 2 << num 不就好了 |
16 beneo 2016 年 8 月 16 日 我以为是 1 , 2 , 4 , 8 看错了 |