- ベストアンサー
バルク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; のようにテーブル名を指定する方法は何か意味があるのでしょうか? テーブル名を指定すると、テーブルにあるレコード数分 データが返却されてしまいました。。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
仕様です。 http://dev.mysql.com/doc/refman/5.1/ja/information-functions.html ----- 引用ここから MySQL 5.1.12 以降では、LAST_INSERT_ID() ( 引数なし ) は、最も最近に実行された INSERT 文の結果として AUTO_INCREMENT カラムに正常に インサートされた、自動的に生成された最初の値を戻します。 ----- 引用ここまで
その他の回答 (2)
- chukenkenkou
- ベストアンサー率43% (833/1926)
LAST_INSERT_ID()の仕様であることは、#1、#2さんのURLで分かると思います。 >SELECT LAST_INSERT_ID() FROM test; >のようにテーブル名を指定する方法は何か意味があるのでしょうか? >テーブル名を指定すると、テーブルにあるレコード数分 >データが返却されてしまいました。。 「select ~ from test」とすれば、当然、testの全行が検索されます。このとき、test表の列でなく、LAST_INSERT_ID()を指定すれば、当然、行数分、同じ値が返されることになります。
- yambejp
- ベストアンサー率51% (3827/7415)