Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> id при множественной вставке 
V
    Опции темы
WolfON
Дата 13.10.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: нет
Всего: 8



Есть такая полезная штука в pdo как lastInsertId, но он возвращает id только последней добавленной записи, а я хочу сделать вставку так: INSERT INTO table VALUES (val1, val2),(val3,val4),(val5,val6) и тд

Как получить список id всех вставленных записей?

или использовать транзакции и делать кучу инсертов?
PM MAIL ICQ   Вверх
Kesh
Дата 13.10.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 5
Всего: 54



Никак, можно перед вставкой запомнить id и сверить с ним после вставки...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
flashaa
Дата 13.10.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 2
Всего: 25



делать серию insert, после каждого получать id послдней вставленной записи.
PM MAIL   Вверх
WolfON
Дата 13.10.2007, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: нет
Всего: 8



Ну это понятно, что так можно сделать, но это не эффективно, по этому я в конце спросил - если делать это при помощи транзакций, то много я потеряю в производительности?
PM MAIL ICQ   Вверх
flashaa
Дата 13.10.2007, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 2
Всего: 25



Можно ещё сделать второй запрос
Код

SELECT id 
FROM table
ORDER by id DESC LIMIT <кол-во вставляемых записей>

 если ты тут собирался использовать транзакцию

В mysql есть функция LAST_INSERT_ID(), но для твоего запроса она возвращает id от первой вставки, да и по сути она эквивалентна запросу.

Это сообщение отредактировал(а) flashaa - 13.10.2007, 22:14
PM MAIL   Вверх
SelenIT
Дата 14.10.2007, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 9
Всего: 401



А LAST_INSERT_ID() + ROW_COUNT() -1, случайно, не даст то что нужно? Насколько я понимаю, чужие вставки при мультиинсерте вклиниваться и так не должны...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
flashaa
Дата 14.10.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 2
Всего: 25



Цитата(SelenIT @  14.10.2007,  02:53 Найти цитируемый пост)
А LAST_INSERT_ID() + ROW_COUNT() -1, случайно, не даст то что нужно? Насколько я понимаю, чужие вставки при мультиинсерте вклиниваться и так не должны... 

Даже если другие запросы вклиниваться не будут, чтобы проселектировать LAST_INSERT_ID() + ROW_COUNT() -1, понадобиться ещё один запрос - поэтому используешь эту функцию или нет, все равно все сводится ко второму запросу и, следовательно, к использованию транзакций. 

Это сообщение отредактировал(а) flashaa - 14.10.2007, 12:41
PM MAIL   Вверх
vasac
Дата 14.10.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 3
Всего: 36



Зачем второй запрос? Последний ID вы получаете сразу. Количество вставляемых строк, вы должны знать сами изначально.
PM WWW   Вверх
WolfON
Дата 14.10.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: нет
Всего: 8



vasac, так и сделал smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0618 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.