Tips

2017.06.26

【MySQL】直前にINSERTしたレコードのIDを取得したい

例えば商品の購入履歴のテーブルがあるとします。
一回の購入はorder_headテーブルに、その明細はorder_bodyテーブルにINSERTされます。
その場合、order_headの主キーが外部キーになります。

処理の順番としては、

  1. order_headにレコードがINSERTされる
  2. order_headにINSERTしたレコードの主キーを取得
  3. 取得した主キーを外部キーとして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練習問題集

Recent News

Recent Tips

Tag Search