MySQL插入时事务回滚自增主键也将被占用

现有如下数据表:

mysql> SELECT * FROM test_demo;
+----+------+
| id | name |
+----+------+
|  1 | a    |
|  2 | b    |
+----+------+
2 rows in set

执行如下语句,开启事务,插入数据,回滚事务:

BEGIN;

INSERT INTO test_demo (NAME) VALUES ('c');

ROLLBACK;

再执行一次插入语句,不过此次正常提交事务,不回滚:

BEGIN;

INSERT INTO test_demo (NAME) VALUES ('c');

COMMIT;

再次执行查询语句:

mysql> SELECT * FROM test_demo;
+----+------+
| id | name |
+----+------+
|  1 | a    |
|  2 | b    |
|  4 | c    |
+----+------+
3 rows in set

发现一个很有意思的现象,数据正常插入了,但是主键并不是3,而变成了4。

结论:即使插入的时候事务发生了回滚,mysql的自增主键也会加一并占用。

 

posted @ 2021-01-20 23:37  一首简单的歌  阅读(431)  评论(0编辑  收藏  举报