auto_incrementのカラムにデータ投入すると次の値は?

表題の件について、どうなるんだっけ?と分からなくなってしまったので確認する。

■ 環境

  • MySQL 5.7.17

■ auto_increment

下記のテーブルを用意した。データはまだ投入していない。

mysql> show create table test;
+-------+-----------------------------------+
| Table | Create Table                      |
+-------+-----------------------------------+
| test  | CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+-----------------------------------+
1 row in set (0.00 sec)

mysql>
mysql> select * from test;
Empty set (0.01 sec)

mysql>

このテーブルに1件データを投入すると、”auto_increment“で”1“が投入される。

mysql> insert into test values (null, 'test1');
Query OK, 1 row affected (0.08 sec)

mysql> select * from test;
+----+-------+
| id | name  |
+----+-------+
|  1 | test1 |
+----+-------+
1 row in set (0.01 sec)

mysql>

この時の`auto_increment`の値は”2″になっていた。

mysql> show create table test;
+-------+-----------------------------------+
| Table | Create Table                      |
+-------+-----------------------------------+
| test  | CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 |
+-------+-----------------------------------+
1 row in set (0.00 sec)

mysql>

続いて”id“カラムに”3“を投入する。

mysql> insert into test values (3, 'test1');
Query OK, 1 row affected (0.02 sec)

mysql>
mysql> select * from test;
+----+-------+
| id | name  |
+----+-------+
|  1 | test1 |
|  3 | test1 |
+----+-------+
2 rows in set (0.00 sec)

mysql> show create table test;
+-------+-----------------------------------+
| Table | Create Table                      |
+-------+-----------------------------------+
| test  | CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 |
+-------+-----------------------------------+
1 row in set (0.00 sec)

mysql>

なるほど。”auto_increment“の値は必ず”最大値+1“以上になってくれるようである。

以上。

■ 確認