【问题标题】:use empty ID with AUTO_INCREMENT [duplicate]使用带有 AUTO_INCREMENT 的空 ID [重复]
【发布时间】:2014-08-27 08:14:49
【问题描述】:

我将 AUTO_INCREMENT 用于我的 PK,并且我想在从表中删除记录时重用 id。

例如,如果我删除带有id=5 的记录,我希望下一次插入的新记录使用空的id=5

那么如何使用 AUTO_INCREMENT 填充未使用的 ID?

【问题讨论】:

  • 非常糟糕的主意。如果您决定归档数据,重复使用主键会给您带来麻烦。
  • 我不会归档我的数据 :)
  • 你到底想达到什么目的?你害怕用完数字吗?
  • 是的,这是我关心的问题。号码用完了
  • int 在 MySQL 中的最大值是 2,147,483,647。还不够?

标签: mysql sql


【解决方案1】:

重用 auto_increments 的想法是一个可怕的想法。其中最大的原因是并发性。您可以(并且将会)使您的整个数据库和数据模型变得不稳定。

为 id 使用正确的数据类型将纠正您用完数字的问题,在这种情况下正确的数据类型为 bigint

bigint 允许您存储最大为 18446744073709551615 的大小。

如果您的插入每秒 1000 次,这意味着您将在 1 天内执行 1000 * 3600 * 24 条记录,或每天执行 8640 万条记录。在一年的时间里,这将是 31,536,000,000 条记录。使用简单的数学,您可以计算出您将在大约 58 000 年内超过上面的 bigint,如果您能够在此期间每秒产生 1000 次插入,这应该会说服您使用适当的数据类型来处理记录而不是比试图聪明只会导致失败。

【讨论】:

  • 谢谢它很清楚:)
猜你喜欢
  • 2012-10-08
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 2012-12-02
  • 2015-11-10
  • 1970-01-01
  • 2015-04-15
相关资源
最近更新 更多