为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕无忌1623718 2019-06-26 15:43:45
重新排序/重置自动增量主键我有一个带有自动增量主键的MySQL表。我删除了表中间的一些行。例如,ID列中有这样的内容:12、13、14、19、20,我删除了15、16、17和18行。我希望重新分配/重置/重新排序主键,使我具有连续性,即使19 a 15,20 a 16,等等。我该怎么做?
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

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

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


查看完整回答
反对 回复 2019-06-26
?
大话西游666

TA贡献1817条经验 获得超14个赞

尽管这个问题似乎很古老,但是会给那些在这里搜索的人发个答案。

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.


查看完整回答
反对 回复 2019-06-26
?
青春有我

TA贡献1784条经验 获得超8个赞

若要重置用户表的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;


查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 397 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信