【问题标题】:Resetting manually assigned IDs to auto increment将手动分配的 ID 重置为自动递增
【发布时间】:2019-10-31 06:10:14
【问题描述】:

我不小心推送了为新行分配 ID(在 0 到 1000000 之间随机生成)而不是自动递增的代码。所以目前是这样的情况:

ID, Name
1, foo
2, bar
79812, baz
89991, qux

幸运的是,在我发现问题之前不久,我只是想知道是否有可能将行重置为其可能的自动递增 id,所以它看起来像:

ID, Name
1, foo
2, bar
3, baz
4, qux

【问题讨论】:

  • 不,一般情况下不可能这样做,除非您有一列一直在跟踪原始订单。你有这样的专栏吗?
  • @TimBiegeleisen 我想假设 ID 不正确的行是 1) 在按 ID asc 排序时是安全的 2) 第一个不按顺序排列的数字 (2 -> 79812) 3) 直到最后一个。
  • 如果您确定ID 的值一直在增加(并且永远不会回溯到较小的值),那么您可以使用ROW_NUMBER() OVER (ORDER BY ID) 来生成您想要的序列。

标签: mysql auto-increment


【解决方案1】:
  1. 更改表 - 重命名 ID 字段并删除 PK

  2. 更改表 - 添加 ID 字段,使其成为 PK 并自动递增

  3. 检查数据,确保新 ID 具有您需要的值

  4. 删除旧 ID 字段

【讨论】:

    猜你喜欢
    • 2015-12-22
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2010-10-04
    • 2015-03-10
    • 1970-01-01
    相关资源
    最近更新 更多