MySQL数据库删除数据后,再新增数据就会导致自增ID不连续
解决方法
1. 删除一行数据后,其后数据自增ID值减一(mapper.xml)
update 表名 set id = id - 1 where id > #{deleteId}
2. 更新下一个自增ID值
当设置值小于 max(id) 时,会自动设置为 max(id)+1 ,故一般设置为1就好
alter table 表名 auto_increment = 1
性能优化
上述方法每次删除数据都要执行,可通过MySql的定时任务实现性能优化——每天零点进行自增ID重置
1. 定义重置自增ID的存储过程
create procedure p_reset_id()
begin
set @i = 0;
update 表名 set id = (@i := @i + 1);
alter table 表名 auto_increment = 1;
end
2. 开启事件调度器
show variables like 'event_scheduler';
set global event_scheduler = on;
3. 定义事件/定时任务
create event e_reset_id
on schedule every 1 day
starts '2024-10-12 00:00:00'
do call p_reset_id();
1542

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



