gpt4 book ai didi

mysql - 如果使用这个简单的算法,所有数字在表格中是否都是 100% 唯一的?

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:41 25 4
gpt4 key购买 nike

我的目标是每次在用户机器上发生事件时,使用 ajax 将一个新的和唯一的(唯一性非常重要)数字插入到服务器上的 MySQL 表中。

因此,服务器对用户事件的部分是这样做的(使用 php):

  • 从数据库中的列中找到最大值,
  • 将 10 添加到最大值,
  • 这是一个新的且唯一的(大于最大值)值,我们将插入插入到表中。

如果从 1 开始,是否所有数字都是唯一的并且像 1、11、21、31 一样?我很好奇是否在开始执行另一个队列之前插入到表中并完成,并且可能像 1、11、21、21、31、41?

如果理论上是这样的(按时间排序)

  1. 从第一个用户的列中找到最大值
  2. 从第二个用户的列中找到最大一个值(它将是相同的)
  3. 将第一个用户的 (max+10) 插入到同一个表中
  4. 将第二个用户的(max+10)插入到同一张表中(会是一样的),那么结果是一样的,1个值可以重复两次甚至更多...

因此,问题是:所有数字是否都是 100% 唯一的?根据这一点,我必须选择用于创建唯一数字的算法。

添加:是否可以确定使用此算法而不使用自动增量?自动增量用于另一列。数字之间的孔是可以的。唯一的要求是数字应该不同,但有一些大于一的“增量”。抱歉,我在问题中没有注意到这一点。谢谢。

最佳答案

除非您有非常具体的理由反对,否则我建议使用 AUTO_INCREMENT - 与您的方法相比,它的扩展性更好,并且实际上在数字序列中留下的“漏洞”更少。

你是对的——你的方法实际上并不能保证在并发环境中的唯一性。使你的算法工作的一种方法是在你的字段上有一个 UNIQUE 约束(如果它还不是 PRIMARY KEY)然后反复尝试插入一个新值 - 如果它失败只是生成一个新值并重试,它最终会成功。

关于mysql - 如果使用这个简单的算法,所有数字在表格中是否都是 100% 唯一的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com