【问题标题】:Mysql replace all id's to make a correct sequenceMysql 替换所有 id 以做出正确的序列
【发布时间】:2015-04-03 19:23:28
【问题描述】:

我想知道是否可以在 mysql 中重新分配自动递增的 ID,以便它们相互跟踪。

目前我已经删除了行,因此我的 ID 如下

  • 1
  • 2
  • 3
  • 8
  • 9
  • 14

是否可以运行一个将所有 id 再次替换为自动增量的查询?这样现有的行将是

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

【问题讨论】:

  • 不,不要乱用自动增量。你需要它做什么?
  • 这是一个常见的问题,但答案是你不需要。间隙不是主键中的问题。
  • 该死,我搜索了但找不到任何东西,顺便说一句,你们很快。我个人认为这不是问题,但我的一位客户/同事坚持使用行 ID 在 CMS 中显示,而不是仅在循环迭代中添加基于 $i 的数字。不知道为什么,但我想,如果他坚持我们就这么做 =')
  • 在你使用自动增量之前,答案是不可能的。
  • 是的,从美学上看它很丑,但请考虑一下;每次删除某些内容时,都需要填补空白。如果您有数百万行或更多行怎么办?

标签: mysql phpmyadmin auto-increment increment


【解决方案1】:

可以通过 phpMyAdmin 完成:

  • 在您的 id 列中,移除自动增量设置
  • 删除结构中的主键 > 索引
  • 创建一个新列 future_id 作为主键,auto_increment
  • 浏览您的表格并验证新的增量是否符合您的预期
  • 删除旧的 id 列
  • 将 future_id 列重命名为 id
  • 通过结构 > 移动列移动新的 id 列

【讨论】:

  • 还不能投票,还需要 4 个声望,但这有帮助。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 2011-03-09
相关资源
最近更新 更多