Spring事物异常回滚后,MySQL的自增ID依然增加

Spring是常用的轻量级开发框架,在使用Spring过程中,就难免接触并使用Spring事物相关的内容,在上一篇《Spring事务知多少》中,介绍了一些关于Spring相关的事物知识,以及Spring失效的几种场景。那么对于,Spring事物异常回滚之后,对Mysql的影响是怎么样的呢?

今天在做测试的时候发现,当Spring事物发生异常回滚后,MySQL的自增ID仍然增加。如下图:

表的存储引擎是:InnoDB
表的ID是自增,如下:

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'

可以看到,在id=125时发生异常,事物回滚,再插入一条数据成功,这时候你的ID不是125,而是126。也就是说即便事物回滚了,但是ID还是自增了,并未因为事物回滚而回滚。

这个并不是bug,这是设计使然,自增ID不会被事务化,如果需要紧密连续的自增序列,建议采用其他方法生成。

你可能感兴趣的:(Spring事物异常回滚后,MySQL的自增ID依然增加)