MySQL——对ID自增库中对删除一些数据后剩下的不连续的数据进行顺序重排

问题描述:

这是原有的数据库内容:
MySQL——对ID自增库中对删除一些数据后剩下的不连续的数据进行顺序重排_第1张图片
我们把第4条数据《活着》删除
DELETE FROM book WHERE id = 4;
MySQL——对ID自增库中对删除一些数据后剩下的不连续的数据进行顺序重排_第2张图片
然后再增加一条数据
INSERT INTO book VALUES(null, 2, '活着', 35.00);
会发现增加了一条id为6的数据
MySQL——对ID自增库中对删除一些数据后剩下的不连续的数据进行顺序重排_第3张图片
虽说在项目中不大会出现重新对数据库中的id进行重排序的需求……

解决:

SET @i=0;
UPDATE book SET id=(@i:=@i+1);
ALTER TABLE book auto_increment=1;
利用了MySQL的会话变量舍弃原有ID,对数据重新从1开始排序,然后再让主键自增从1开始,之后添加的数据就会按照顺序来了。

执行
SET @i=0;
UPDATE book SET id=(@i:=@i+1);
MySQL——对ID自增库中对删除一些数据后剩下的不连续的数据进行顺序重排_第4张图片
此时添加数据
INSERT INTO book VALUES(null, 3, '三体', 55.00);
MySQL——对ID自增库中对删除一些数据后剩下的不连续的数据进行顺序重排_第5张图片
执行
SET @i=0;
UPDATE book SET id=(@i:=@i+1);
ALTER TABLE book auto_increment=1;
MySQL——对ID自增库中对删除一些数据后剩下的不连续的数据进行顺序重排_第6张图片
此时再添加数据
MySQL——对ID自增库中对删除一些数据后剩下的不连续的数据进行顺序重排_第7张图片
达到要求

你可能感兴趣的:(mysql,数据库)