当前位置:首页 > 站长知识 > 数据库 > 正文内容

MySQL数据库删除数据自增ID不连续

2024-11-29数据库37

MySQL数据库删除数据后,再新增数据就会导致自增ID不连续

解决方法

1. 删除一行数据后,其后数据自增ID值减一(mapper.xml)

1
update 表名 set id = id - 1 where id > #{deleteId}

2.  更新下一个自增ID值

当设置值小于 max(id) 时,会自动设置为 max(id)+1 ,故一般设置为1就好

1
alter table 表名 auto_increment = 1

性能优化

上述方法每次删除数据都要执行,可通过MySql的定时任务实现性能优化——每天零点进行自增ID重置

1. 定义重置自增ID的存储过程

1
2
3
4
5
6
create procedure p_reset_id()
begin
    set @i = 0;
    update 表名 set id = (@i := @i + 1);
    alter table 表名 auto_increment = 1;
end

2.  开启事件调度器

1
2
show variables like 'event_scheduler';
set global event_scheduler = on;

3. 定义事件/定时任务

1
2
3
4
create event e_reset_id
on schedule every 1 day
starts '2024-10-12 00:00:00'
do call p_reset_id();