INSERT直後のAUTO_INCREMENT値を取得する方法【MySQL(MariaDB)】

INSERT直後のAUTO_INCREMENT値を取得する方法【MySQL(MariaDB)】

INSERT直後にそのレコードのAUTO_INCREMENT値を取得し、そのキーを使ってサブテーブルのレコードを追加したいことってありますよ。
MySQL(MariaDB)で、そのキーを取得する方法を紹介します。

取得する方法

INSERT直後に下記のSQL文を流すだけです。とても簡単です。

SELECT last_insert_id();

サンプル文

CREATE TABLE animals (
    id INTEGER NOT NULL AUTO_INCREMENT,
    name CHAR(32) NOT NULL,
    PRIMARY KEY (id)
);

INSERT INTO animals (name) VALUES ('dog');

SELECT last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|                1 |
+------------------+

INSERT INTO animals (name) VALUES ('cat')
,('penguin'),('lax'),('whale'),('ostrich');

-- 5件追加したけど、2が表示される。
SELECT last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|                2 |
+------------------+

SELECT * FROM animals;
+----+---------+
| id | name    |
+----+---------+
|  1 | dog     |
|  2 | cat     |
|  3 | penguin |
|  4 | lax     |
|  5 | whale   |
|  6 | ostrich |
+----+---------+

-- 1件を追加
INSERT INTO animals (name) VALUES ('raion');

-- 1件だと正しく表示される
SELECT last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|                7 |
+------------------+
1つのINSERTクエリで複数の値を入れた場合は、1件と見なされてしまいますので、ご注意ください。