表題の件について、どうなるんだっけ?と分からなくなってしまったので確認する。
■ 環境
- 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“以上になってくれるようである。
以上。