ロックとチュウーハイとこりんがるな日々

日々のインプットした事をアウトプットする場所

mysql のauto_incrementはroolbackしても戻らない

たった今しったのでメモ

mysql のauto_incrementはroolbackしても元に戻らない

このテーブルに対してinsertを行う

mysql> select * from test;
+----+-------+------+
| id | name  | age  |
+----+-------+------+
|  1 | lion  |   15 |
|  2 | tiger |   25 |
|  3 | dog   |    1 |
|  4 | cat   |   12 |
+----+-------+------+

トランザクション を開始

mysql> begin;
mysql> insert into test (name, age) values('bear', 32);
mysql> roolback;
mysql> select * from test;
+----+-------+------+
| id | name  | age  |
+----+-------+------+
|  1 | lion  |   15 |
|  2 | tiger |   25 |
|  3 | dog   |    1 |
|  4 | cat   |   12 |
+----+-------+------+

次はコミットしてみる

mysql> begin;
mysql> insert into test (name, age) values('bear', 32);
mysql> commit;
mysql> select * from test;
+----+-------+------+
| id | name  | age  |
+----+-------+------+
|  1 | lion  |   15 |
|  2 | tiger |   25 |
|  3 | dog   |    1 |
|  4 | cat   |   12 |
|  6 | bear  |   32 |
+----+-------+------+

insertは巻き戻されるけど、auto_incrementの値は巻き戻されずに増加してしまう、手動でまきもどしてもよいが、そこまでするメリットが

思い浮かばない

ちなみにこれはmysqlの仕様らしいです