MySQL数据库删除数据自增ID不连续的实现示例
作者:浅天yxc
本文介绍了MySQL数据库删除数据后自增ID不连续的问题,文中通过2种方法解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
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();
到此这篇关于MySQL数据库删除数据自增ID不连续的实现示例的文章就介绍到这了,更多相关MySQL 删除数据自增ID不连续内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!