从网上查到几种方法
1. 不需要数据库中的数据的情况
truncate table table_name
这是因为进行全表操作时,MySQL实际是做了这样的优化操作:先把数据表里的所有数据和索引删除,然
后重建数据表。如果想删除所有的数据行又想保留序列编号信息,可这样用一个带where的delete命令以
2.需要保存数据的情况
- 方法1:删除主键,重新创建主键
--mysql举例
alter table table_name drop 'id';
alter table table_name add column id int auto_increment primary key;
执行完上面这一条,字段增加,但值为空
alter table table_name auto_increment=100;
执行这一条,它会自动为已存在的数据的自增字段赋初值,从1开始,同时将后续新增的数据从100开始
- 方法2:修改已有的数据初始值(没有达到我想要的结果)
alter table table_name auto_increment=n
命令来重设自增的起始值
但是这个我试了,以为能 1,2,4,5,7,8
这种情况下设置
alter table table_name auto_increment=1
就再增加数据就会填补3,6
但是实际上并不是这样,
alter table table_name auto_increment=n;
注意n只能大于已有的auto_increment的整数值,小于的值无效.
3.感悟
查这个问题时更多得到的信息是,数据库不推荐重用已使用过的编号(索引)
要重新排列现有的序列编号,最简单的方法是先删除该列,再重建该,MySQL会重新生连续的编号序列。
4.参考
参考学习来源 本文中之是选出了某个相关问题。

本文探讨了MySQL中自增ID的多种调整方法,包括在不保留数据与保留数据情况下的操作,以及如何通过修改主键和数据初始值实现自增ID的重置。文章还分享了作者的实践感悟,并提醒读者注意数据库编号重用的风险。
289

被折叠的 条评论
为什么被折叠?



