2017.06.26
【MySQL】直前にINSERTしたレコードのIDを取得したい
例えば商品の購入履歴のテーブルがあるとします。
一回の購入はorder_headテーブルに、その明細はorder_bodyテーブルにINSERTされます。
その場合、order_headの主キーが外部キーになります。
処理の順番としては、
- order_headにレコードがINSERTされる
- order_headにINSERTしたレコードの主キーを取得
- 取得した主キーを外部キーとしてorder_bodyにINSERT
というところですかね。
今回はこの順番のうちに2の説明になります。
MAX()で取得することもできますが、今回はLAST_INSERT_ID()を紹介します。
LAST_INSERT_ID()は関数名の通り、最後にINSERTされたIDを取得するためのものです。
使い方は以下の通り
SELECT LAST_INSERT_ID();
FROM句はいりません。
ただし、この関数で取得できるのはAUTO_INCREMENTの値だけなので気をつけて下さい。
SQLが学べる 関連連載リンク
データベースの基礎が学べるSQL基礎講座
SQL基礎 連載
練習問題を通じてSQL理解度アップの人気連載!
SQL練習問題集