不删除表数据重置自增id

最近由于需要将数据表的自增主键id重置,所以查找了相关的信息,但暂时没有找到特别好的方法,只能用比较笨的方法进行重置,那就是新建一个一模一样的临时表,然后清除原先表的数据,再将临时表的信息进行填充以此重置id。

比如有a表需要进行重置id,需求:需要将a表的id从1开始自增


解决方案:

1;建立临时表b:
create table b select * from a;

这个时候临时表b保存了a表的数据。


2:重置a表

truncate a;

这里要注意truncate是ddl语句,清空表里所有的数据保留表结构,无法进行回退恢复,这里和delete不一样,delete是dml语句,可以进行回退。


3:将临时表b的数据重新导入到a表,进行id自增的重置

insert into a(name,status) select name,status from b order by id asc;