• ベストアンサー

バルクINSERT直後に、最後のIncremet値は取得できますか?

PHPからMySQLへトランザクションを使わずに、 INSERT INTO test (id,count) VALUES (5,5),(6,6) のようにINSERTした直後に、SELECT LAST_INSERT_ID(); としても、5が返却されてしまいます。 これはMySQLの仕様でしょうか? 又、 SELECT LAST_INSERT_ID() ではなく、 SELECT LAST_INSERT_ID() FROM test; のようにテーブル名を指定する方法は何か意味があるのでしょうか? テーブル名を指定すると、テーブルにあるレコード数分 データが返却されてしまいました。。

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

仕様です。   http://dev.mysql.com/doc/refman/5.1/ja/information-functions.html ----- 引用ここから MySQL 5.1.12 以降では、LAST_INSERT_ID() ( 引数なし ) は、最も最近に実行された INSERT 文の結果として AUTO_INCREMENT カラムに正常に インサートされた、自動的に生成された最初の値を戻します。 ----- 引用ここまで

その他の回答 (2)

回答No.3

LAST_INSERT_ID()の仕様であることは、#1、#2さんのURLで分かると思います。 >SELECT LAST_INSERT_ID() FROM test; >のようにテーブル名を指定する方法は何か意味があるのでしょうか? >テーブル名を指定すると、テーブルにあるレコード数分 >データが返却されてしまいました。。 「select ~ from test」とすれば、当然、testの全行が検索されます。このとき、test表の列でなく、LAST_INSERT_ID()を指定すれば、当然、行数分、同じ値が返されることになります。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

関連するQ&A