【问题标题】:Reset MySQL auto_increment when a large number already exists?当大量已经存在时重置MySQL auto_increment?
【发布时间】:2011-06-12 07:16:20
【问题描述】:

我有一个带有自动递增列的表。我需要将其中一行设置为 1000 并且不再触摸它,但现在我已将其设置为 1000,自动增量一直从 1001 开始并拒绝从 1 开始。有没有办法解决这个问题?

【问题讨论】:

  • 将其设置为 0 怎么样? :)
  • 如果您可以让它工作,那么一旦自动增量再次达到 1000,您期望会发生什么?

标签: mysql auto-increment


【解决方案1】:

简单而简短的回答:你不能这样做。

如果可以,如果您从 1 开始自动增量并插入 1000 行会发生什么?由于“重复键”错误,无法插入最后一个。

如果你必须有一个预定义的条目,它的 id 永远不会改变并且容易记住,你为什么不使用 0 呢?或者,如果你真的需要使用 1000,让其他列从 1001 开始有什么问题?

【讨论】:

  • 他不应该,但他不能。看我的回答。
  • 这是 ajreal 编辑我的答案,我写了“不能” - 现在我回滚了那个编辑
【解决方案2】:

你不能:

改变值 AUTO_INCREMENT 计数器用于 新行,这样做:

ALTER TABLE t2 AUTO_INCREMENT = 值;

您不能将计数器重置为 值小于或等于任何 已经被使用了。对于 MyISAM,如果 该值小于或等于 当前的最大值 AUTO_INCREMENT 列,值为 重置为当前最大值加一。 对于 InnoDB,如果值小于 中的当前最大值 列,不会发生错误,并且 当前序列值没有改变。

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

【讨论】:

    【解决方案3】:

    您可以将链接到 MySQL 的 MS Access 用作外部表,并且您可以通过 Excel 中的复制粘贴来更改 MS Access 中的自动增量表字段值(首先,您需要在 Excel 中安排自动增量的值)。

    【讨论】:

      【解决方案4】:

      假设你没有其他1000的行ID,你可以将该行插入到表的底部,那么你可以简单地使用更新命令:

      UPDATE  table.column SET id = 1000 WHERE id = current_id;
      

      假设 id 是您的自动增量列。并且 current_id 应该替换为插入行的 id。

      【讨论】:

        【解决方案5】:

        您可以使用以下语句:

        UPDATE tbl SET id=1000 WHERE id=current_id;
        ALTER TABLE tbl AUTO_INCREMENT=1001;
        

        【讨论】:

          猜你喜欢
          • 2013-03-22
          • 2017-04-14
          • 1970-01-01
          相关资源
          最近更新 更多