multiple insert && last_insert_id

voodoo

Новичок
multiple insert && last_insert_id

Обнаружил тут, что при инсерте нескольких строк одновременно, ласт айди возвращает вовсе не последнее значение автоинкрементного поля, а первое из вставленных.

Кто чего думает, корректно ли такое поведение:


mysql> create table test (id int auto_increment primary key, test int);
Query OK, 0 rows affected (0.03 sec)


mysql> insert into test(test) values(1),(2),(3);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
| 1 |
+------------------+
1 row in set (0.02 sec)

mysql> select * from test;
+----+------+
| id | test |
+----+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
+----+------+
3 rows in set (0.00 sec)
---------------------------------
Т.е. last_insert_id говорит 1, а на самом деле там уже 3.
То же самое при работе из пхп (mysql_insert_id())
достаньте, плиз, меня из танка ;)
MySQL: 3.23.41
 

voodoo

Новичок
да, блин... нашел

есть ли способ гарантированно узнать последний ид без дополнительных запросов?
mysql_insert_id + mysql_affected_rows -1, насколько мне представляется, не гарантирует точности
 

voodoo

Новичок
да понятно, один из вариантов выхода из ситуации.

в любом случае, спасибо за вправление мозгов :)
 
Сверху