首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改mysql自动增量id列值

更改mysql自动增量id列值
EN

Stack Overflow用户
提问于 2020-11-20 21:22:02
回答 1查看 35关注 0票数 0

我有一个包含gpid AUTO_INCREMENT NOT NULL UNIQUE列的mysql表。

填充这个表(其中包含50M+条目)后,我意识到如果事务由于IntegrityError而失败,mysql仍然会递增AUTO_INCREMENT列,这是可以理解的。

结果是AUTO_INCREMENT列中的间隙,以及gpid跳跃值(例如,在两个连续的行之间从gpid == 3gpid == 5 )。虽然这不是机器的问题,但这是我和我的同事的问题。本列的目的之一是表示表中的确切行数。

有没有一种方法可以将所有gpid列值更改为合适的范围(从1到53926669),而不需要删除/重新填充表中的行的顺序?加满水要花我很长时间。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-20 21:29:13

与其他数据库一样,MySQL不能保证自动增量列中没有间隙。对表重新编号可能会在特定的时间点修复问题,但是将来可能(并且很有可能)会出现差距。

如果你想要一个一元递增的序列,那么自动递增并不是你所需要的。例如,您可以创建一个视图,并使用row_number()

代码语言:javascript
复制
create view myview as
select t.*, row_number() over(order by gpid) as new_gpid
from mytable t
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64930233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档