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

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

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

我希望重新分配/重置/重新排序主键,使我具有连续性,即使19 a 15,20 a 16,等等。

我该怎么做?


慕无忌1623718
浏览 398回答 3
3回答

海绵宝宝撒

您可以删除主键列并重新创建它。然后,应该按照顺序重新分配所有ID。然而,在大多数情况下,这可能是个坏主意。如果您有其他具有此表外键的表,那么它肯定无法工作。

大话西游666

尽管这个问题似乎很古老,但是会给那些在这里搜索的人发个答案。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.

青春有我

若要重置用户表的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;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL