![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: нет Всего: 8 |
Есть такая полезная штука в pdo как lastInsertId, но он возвращает id только последней добавленной записи, а я хочу сделать вставку так: INSERT INTO table VALUES (val1, val2),(val3,val4),(val5,val6) и тд
Как получить список id всех вставленных записей? или использовать транзакции и делать кучу инсертов? |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 5 Всего: 54 |
Никак, можно перед вставкой запомнить id и сверить с ним после вставки...
-------------------- ![]() |
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 2 Всего: 25 |
делать серию insert, после каждого получать id послдней вставленной записи.
|
|||
|
||||
| WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: нет Всего: 8 |
Ну это понятно, что так можно сделать, но это не эффективно, по этому я в конце спросил - если делать это при помощи транзакций, то много я потеряю в производительности?
|
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 2 Всего: 25 |
Можно ещё сделать второй запрос
если ты тут собирался использовать транзакцию В mysql есть функция LAST_INSERT_ID(), но для твоего запроса она возвращает id от первой вставки, да и по сути она эквивалентна запросу. Это сообщение отредактировал(а) flashaa - 13.10.2007, 22:14 |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 9 Всего: 401 |
А LAST_INSERT_ID() + ROW_COUNT() -1, случайно, не даст то что нужно? Насколько я понимаю, чужие вставки при мультиинсерте вклиниваться и так не должны...
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 2 Всего: 25 |
Даже если другие запросы вклиниваться не будут, чтобы проселектировать LAST_INSERT_ID() + ROW_COUNT() -1, понадобиться ещё один запрос - поэтому используешь эту функцию или нет, все равно все сводится ко второму запросу и, следовательно, к использованию транзакций. Это сообщение отредактировал(а) flashaa - 14.10.2007, 12:41 |
|||
|
||||
| vasac |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 3 Всего: 36 |
Зачем второй запрос? Последний ID вы получаете сразу. Количество вставляемых строк, вы должны знать сами изначально.
|
|||
|
||||
| WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: нет Всего: 8 |
vasac, так и сделал
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |