【问题标题】:controlling auto incremented column?控制自动递增的列?
【发布时间】:2013-03-03 09:13:57
【问题描述】:

我有一个名为 ptb_users 的表,如下所示:

id (auto increment)  |  name   | email
1                       john     john@email.com
2                       kate     kate@gmail.com
29                      harry    harry@email.com
10016                   lisa     lisa@mail.com

id 是一个自动递增值,到目前为止它的 id 为 1-29,但现在由于某种原因它跳过了 30-10015 并从 10016 开始自动递增?

有人知道这是为什么吗?

谢谢

【问题讨论】:

标签: mysql auto-increment


【解决方案1】:

这通常是因为一个中止的事务分配了用于插入的 id 但随后中止。一般来说,自动增量只能保证产生唯一的 id,不应依赖于产生可预测的数字序列。

【讨论】:

  • 有没有我可以重置自动增量?
  • @JamesCart:你为什么在乎?
  • 据我所知,在 MySQL 中,您可以删除该表并重新创建它。自动增量计数器与表本身相关联,允许人们对其进行操作可能会导致重复的 ID,这非常糟糕。 (或者也许你可以根据另一个答案,这仍然是一件非常糟糕的事情)。
  • @Steve:这不正确。在任何情况下都不可能出现重复的 ID(PRIMARY KEY 约束确保了这一点)。可以使用ALTER TABLE 更新下一个AUTO_INCREMENT 值,但这通常是个坏主意。
  • @eggyal 我假设如果 AUTO_INCREMENT 会导致冲突,那么插入会失败?
猜你喜欢
  • 2016-03-07
  • 2012-04-10
  • 2014-04-15
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 2019-12-08
相关资源
最近更新 更多