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_INCREMENT 计数,您可以立即发出以下语句。

ALTER TABLE `users` AUTO_INCREMENT = 1;

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

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

相关文章:

mysql - Magento 如何将产品组键控到数据库中的产品

mysql - information_schema.tables 查询慢

php mysql 导出 excel

c# - 异常信息是 'Could not load file or assembly ' MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d'?

database - Postgres : two foreign keys to same primary key field

php - Laravel 一对多关系查询绑定(bind)显示 null?

php - 在 MySQL 中使用 `LIKE` 和 `MATCH AGAINST` 搜索数据库

mysql - 地址数据库设计

mysql - 在 bills.item_id = cars.id 上加入账单

MySQL 正确比较和排除结果