MySQLでAUTO_INCREMENTされた値を取得する方法【現役SE解説】

PROGRAM

今回はMySQLでAUTO_INCREMENTされた値を取得する方法について、その他にキーカラムがある場合とない場合に分けて、簡単に解説していきます。

その他にキーカラムがある場合

AUTO_INCREMENTの値以外に、例えばUNIQUE_KEYなるものがあれば、それを条件にしてSELECT文を使ってAUTO_INCREMENTされた値を取得できます。

SELECT {auto_increment_column_name} FROM {table_name} WHERE {key_column_name} = {key_column_value};

ただし、こういうときに限って、キー項目は主キーであるAUTO_INCREMENTされた値だけであることが多いので、この方法が使えるケースはあまり多くないという印象です。

その他にキーカラムがない場合

AUTO_INCREMENTの値以外のキーカラムの有無にかかわらず、AUTO_INCREMENTされた値を取得する方法は以下のとおりです。

SELECT LAST_INSERT_ID();

LAST_INSERT_ID()で同一セッション内で最後に採番されたAUTO_INCREMENTの値を取得することができます。

同一セッション内のため、別セッションからは取得することができない点には注意しておく必要があるでしょう。

ただし、一般的には同一セッション内で十分であると思いますので、ほとんどのケースではこの方法で対応ができると思われます。

余談:AUTO_INCREMENTの値のリセット方法

テストを繰り返していると、AUTO_INCREMENTの値がどんどん先に進んでしまうと思います。

しかし、DELETE文を実行しデータを削除しても、AUTO_INCREMENTの値だけはリセットされません。

そんなときは、TRUNCATE TABLE文を実行すれば、テーブル単位で中身のデータを全て削除してくれるため、AUTO_INCREMENTの値もリセットされます。

TRUNCATE TABLE {table_name}

TRUNCATE TABLEは実務ではよく使うにもかかわらず、意外にも参考書に書かれていることが少ないため、ぜひ有効なリセットの方法として覚えておくと良いでしょう。