我有一个问题,我不确定如何优雅地解决。
背景资料
我有一个小部件表。每个小部件都从一系列数字中分配了一个 ID,比如说 1-999。1-999 的值在我的数据库中保存为名为“config”的表中的“lower_range”和“upper_range”。当用户请求使用我的网络应用程序创建新的小部件时,我需要能够执行以下操作:
- 使用 lua 的 math.random 函数或 sqlite 中的随机数生成器生成 1 到 999 之间的随机数(到目前为止,在我的测试中,lua 的 math.random 总是返回相同的值......但这是一个不同的问题)
- 做一个选择语句,看看是否已经有一个分配了这个数字的小部件......
- 如果没有,请创建新的小部件。
- 否则重复过程,直到您获得当前未使用的号码。
问题
我在上述逻辑中看到的问题有两个:
- 该算法可能需要很长时间,因为我必须继续搜索,直到找到唯一值。
- 如何防止同时请求生成相同值的新小部件编号?
任何建议,将不胜感激。谢谢