mysql - 重新排序/重置自动增量主键

标签 mysql database

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

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

我该怎么做?

最佳答案

尽管这个问题似乎很老,但将为到达此处搜索的人发布答案。

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

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

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

ALTER TABLE `users` AUTO_INCREMENT = 1;

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

关于mysql - 重新排序/重置自动增量主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32216108/

相关文章:

mysql - 计算每个元素在 "search"中出现的次数

php - 使用php在mysql中加载没有文件的数据infile

mysql - 将记录存储在由 mysql 中的查询创建的新表中

java - 如何将 FlexyPool 与 HikariCPFactory 一起使用?

mysql - Laravel Fluent 在不同的地方添加 select()s?

mysql - Scala Slick 分页编译,但在运行时崩溃

database - 保护和加密 Multi-Tenancy 云应用程序共享数据库中的数据

php - 如何使用 PHP 从 HTML 表单检查数据库记录

mysql - 我可以在 ON DELETE CASCADE 之前使用程序存储历史日志吗

java - 在 Android 应用程序上使用 DBHelper (SQLite) 的好习惯是什么