现有如下数据表:
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的自增主键也会加一并占用。