Min*_*ame 10 mysql sql primary-key uniqueidentifier
我想知道是否有人知道为表的主键创建唯一的随机整数id的好方法.我正在使用MySQL.该值必须是整数.
Gar*_*een 14
回应: "因为我想使用该值来编码到Base62,然后将其用于url中的id.如果我自动递增,则用户可能会明白如何生成url id."
如果安全是您的目标,那么使用Base62,即使使用"随机"生成的数字也无济于事.
更好的选择是:
AUTO_INCREMENT
byt*_*ave 10
如果您愿意接受建议并且可以实施,请使用UUID.MySQL的UUID()
函数将返回一个可用于的36个字符值ID
.
如果你想使用整数,我认为你需要创建一个getRandID()
你将在INSERT
语句中使用的函数.此函数需要使用现有ID的随机+检查来返回之前未使用的ID.
检查RAND()
MySQL的功能.
小智 7
如何生成unique_ids是一个有用的问题 - 但是你似乎在生成它们时会做出反效果的假设!
我的观点是,您在创建行时不需要生成这些唯一ID,因为它们基本上与所插入的数据无关.
我所做的是预先生成独特的id以供将来使用,这样我就可以享受自己的甜蜜时光并绝对保证它们是独一无二的,并且在插入时无需进行任何处理.
例如,我有一个order_id的订单表.当用户输入订单时,会立即生成此ID,永久递增1,2,3等.用户无需查看此内部标识.
然后我有另一个表 - unique_ids与(order_id,unique_id).我有一个每天晚上运行的例程,它会为此表预加载足够多的unique_id行,以覆盖可能在接下来的24小时内插入的订单.(如果我在一天内获得10000个订单,我就会遇到问题 - 但这将是一个很好的问题!)
这种方法保证了唯一性,并且可以将任何处理负载从插入事务转移到批处理例程中,而不会影响用户.