首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >重新排序/重置自动递增主键

重新排序/重置自动递增主键
EN

Stack Overflow用户
提问于 2009-04-11 16:11:39
回答 14查看 237.5K关注 0票数 144

我有一个带有自动增量主键的MySQL表。我删除了表中间的一些行。现在,例如,在ID列中有类似这样的内容: 12,13,14,19,20。我删除了15,16,17和18行。

我想重新分配/重置/重新排序主键,以便具有连续性,例如,将19设置为15,将20设置为16,依此类推。

我该怎么做呢?

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2009-04-11 16:20:58

您可以删除主键列,然后重新创建它。然后,应按顺序重新分配所有in。

然而,在大多数情况下,这可能不是一个好主意。如果您有其他表具有指向此表的外键,那么它肯定不会工作。

票数 103
EN

Stack Overflow用户

发布于 2011-03-26 04:21:42

即使这个问题看起来很老了,我也会为那些在这里搜索的人发布一个答案。

SET @count = 0;
UPDATE `users` SET `users`.`id` = @count:= @count + 1;

如果该列在其他表中用作外键,请确保在这些表中使用ON UPDATE CASCADE而不是默认的ON UPDATE NO ACTION作为外键关系。

此外,为了重置AUTO_INCREMENT计数,您可以立即发出以下语句。

ALTER TABLE `users` AUTO_INCREMENT = 1;

对于MySQL,它会将该值重置为MAX(id) + 1

票数 384
EN

Stack Overflow用户

发布于 2010-06-26 07:19:19

要重置我的用户表的ID,我使用以下SQL查询。上面已经说过,这将破坏您与任何其他表的任何关系。

ALTER TABLE `users` DROP `id`;
ALTER TABLE `users` AUTO_INCREMENT = 1;
ALTER TABLE `users` ADD `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
票数 70
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/740358

复制
相关文章

相似问题

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