回答

收藏

为表中的主键随机生成1-999之间的唯一数字

技术问答 技术问答 233 人阅读 | 0 人回复 | 2023-09-12

我有一个问题,我不确定如何优雅地解决它。, O' m6 y8 J5 @2 x! X- m
背景资料
) `% c8 g& ]+ d我有一个小部件表。每个小部件都来自一系列数字(例如1-在999之间)中分配一个ID。1-名为 999config表中保存为
! Y6 ^6 N( z) U$ p( p$ ^# blower_range”和“ upper_range当用户要求使用我的时候Web当应用程序创建新的窗口部件时,我需要执行以下操作:
" M& m2 L# n: P8 Z使用lua的math.random函数产生1-999之间的随机数,或使用sqlite在我的测试中,生成一个随机数生成器(到目前为止,lua的math.random总是返回相同的值…但这是一个不同的问题)  q) D: c# Q, r6 j' C* u
做一个选择句,看看是否有一个小部分分配了这个数字…
1 x+ a- J2 R8 X5 [: Y如果没有,请创建新的小部件。
9 t, Z! ?; T! Z否则,在获得当前未使用的号码之前,请重复此过程。
问题
0 \2 `* X3 L  K/ W- b5 q, D我发现上述逻辑有两个问题:
: g) W8 E# D& g/ g$ T$ y/ w[ol]算法可能需要很长时间,因为我必须继续搜索,直到我找到唯一的值。
5 i5 y9 W- b( M& m' o/ z9 u如何防止要求新的小部件编号同时产生相同的值?[/ol]任何建议建议。- H" f7 J6 O& e) x+ @' h
                                                               
9 J" D" Y9 p" Q( d    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则