不重复的 10 位数的订单 ID

2014-10-31 12:23:02 +08:00
 domino
如何不重复的10位数的订单 ID

10个字内,用时间+随机号很像容易碰撞
9612 次点击
所在节点    PHP
28 条回复
ooxxcc
2014-10-31 17:05:39 +08:00
那个。。为啥订单号需要记的。。
domino
2014-10-31 17:23:41 +08:00
因为要用订单号码去发送礼物.
我也认为没人会用头脑记编号.都会用笔抄.
不过客户就这样坚持.要短才方便他们作业
staticor
2014-10-31 18:06:37 +08:00
时间加uid的增量, 取整数后再加一个简单的数学函数transform.

(存在反函数能寻原值的)

比如tan(x) 1/x 之类的..
Smartype
2014-10-31 20:31:12 +08:00
别想那么复杂,当然也没有那么好的办法。
1. 自增
2. 随机数(或者时间戳+随机数)检查是否存在,如果重复就继续生成随机数

真的没有别的办法。
rwalle
2014-10-31 21:08:27 +08:00
如果楼主又要短又要不重复,如果可能的话建议楼主直接改成字母+数字组合。不过还要看具体如何使用,以及是否一定要用数字。
iam36
2014-10-31 21:18:36 +08:00
Yyyymmddhhmmss xxxxxxxxxx
X从1开始自然递增,每日复位。
给苹果公司也够用了
domino
2014-11-01 00:19:14 +08:00
如果用自增量当order_sn,
是否一定先 insert , 取得 LAST_INSERT_ID后
在 (yyyymmdd+ id) UPDATE order_sn 呢.
有办法一句sql 完成吗.

id , order_sn, user_id
---------------------
1 ,201411010001 ,123
2 ,201411010002 ,456
lowkey
2014-11-01 16:47:56 +08:00
能用字母的话就好办 0-9 加上 a-z 加上A-Z 变成 62进制

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/142878

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX