mysql:11562
From: Kiyotaka Doumae <Kiyotaka Doumae <don@xxxxxxxxxx>>
Date: Tue, 14 Jun 2005 18:07:36 +0900
Subject: [mysql 11562] last_insert_id() の挙動
堂前と申します last_insert_id() の挙動について悩んでいます。 同じ現象を確認された方、いらっしゃいませんか? (既知のバグ、あるいはそういう仕様?) 以下のバージョンの MySQL を使用しています。 mysql Ver 14.7 Distrib 4.1.10a, for portbld-freebsd5.3 (i386) auto_increment を指定したフィールドについて、最後に insert した 時に生成された値を取得するために last_insert_id() を使用していま す。 このとき、確かに最後に追加された auto_increment の値が帰ってく るのですが、なぜか「現在存在するレコード数」分、値が帰ってきます。 http://dev.mysql.com/doc/mysql/ja/miscellaneous-functions.html このあたりの記述だと、1レコードしか返ってこないと思うんですが。 以下の例をご覧いただけると判りやすいかと。 なお、MyISAM TABLE です。 mysql> desc hoge; +-------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | name | text | YES | | NULL | | +-------+---------+------+-----+---------+----------------+ 2 rows in set (0.16 sec) mysql> insert into hoge (name) values ("abc"); Query OK, 1 row affected (0.02 sec) mysql> insert into hoge (name) values ("def"); Query OK, 1 row affected (0.00 sec) mysql> select last_insert_id() from hoge; +------------------+ | last_insert_id() | +------------------+ | 2 | | 2 | +------------------+ 2 rows in set (0.00 sec) mysql> insert into hoge (name) values ("ghi"); Query OK, 1 row affected (0.01 sec) mysql> select last_insert_id() from hoge; +------------------+ | last_insert_id() | +------------------+ | 3 | | 3 | | 3 | +------------------+ 3 rows in set (0.00 sec) -- DON (堂前清隆) don@xxxxxxxxxx / http://www.don.am/~don/
-> 11562 2005-06-14 18:07 [Kiyotaka Doumae <don] last_insert_id() の挙動 11564 2005-06-14 18:15 ┣[とみたまさひろ <tomm] 11566 2005-06-14 18:50 ┃┗[Kiyotaka Doumae <don] 11565 2005-06-14 18:19 ┗[Shuichi Nakagawa <na]