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件と見なされてしまいますので、ご注意ください。