【发布时间】:2015-04-29 17:00:34
【问题描述】:
我有一个包含三列的表:id、foreign_id 和 tag。此表上的查询首先按foreign_id 排序,然后按tag 排序,但我们希望弃用tag 列以支持更可靠和自动生成的id。为此,我们还需要保留存储在tag 列中的排序数据,而不保留tag。这种排序仅在foreign_id 列的范围内才有意义。
为了解决这个问题,我们决定在每个foreign_id 的范围内更新ids,以便id 的顺序保留tag 的顺序信息。
如何更新 AUTO_INCREMENT 主键列,以便在计数器中分配下一个值而不更改行的其余部分?
另外,如何将整行(减去 pk)复制到新行并删除旧行?
【问题讨论】:
-
如果您要求每个 foreign_id 的 id 为 1-N,MyISAM 仍然可以通过使 auto_increment 字段仅作为主键的一部分来支持这一点。我不认为 ALTER 会相应地更新值。如果这是您要查找的内容,我可以提供一个查询以在执行此类 ALTER 后更新数据。
标签: mysql primary-key auto-increment