【问题标题】:Generating Random values for primary key in MySql在 MySql 中为主键生成随机值
【发布时间】:2017-10-12 19:40:22
【问题描述】:

使用 UUID 在具有唯一约束的列中生成随机值是否足够?

或者我们应该追加诸如当前时间戳之类的东西到 UUID。

或者有没有更好的方法来为 sql 列生成随机但唯一的值。

【问题讨论】:

  • UUID 足以满足 99.9999% 的所有用例。 (甚至更多的 9)
  • "...对于主键..." 自动增量不够吗?
  • 我希望它们是随机的。一个用户应该无法猜到其他用户的 ID。
  • 但这是为什么呢?
  • 因此,您正在通过默默无闻创建一个完美的安全示例。猜测 ID 不得授予对任何内容的访问权限。

标签: mysql uuid


【解决方案1】:

用任何语言生成随机数都是用词不当。这些数字是伪随机的。这意味着不完全是 100% 随机的。

还考虑生成1-5范围内的随机数的场景。您可能会得到生成相同数字的重复项。或者,如果您生成超过 5 个数字,您绝对会有重复的。

如果字段只从一个地方更新,时间戳往往是一个很好的 UUID。但是您还必须担心诸如确保其格式正确之类的事情。尤其是在语言/技术之间转换时。

为什么不使用用户 ID 自动增加一列的值?从某处开始列并从那里递增。我会在列表的开头留下一些数字,以便在您需要它们进行测试/管理时尽早留出一些空的数字。

【讨论】:

    猜你喜欢
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 2010-10-15
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多