id при вставке сразу нескольких строк

alex77

Новичок
id при вставке сразу нескольких строк

Здравствуйте.

mysql 5.0,
есть табличка `id`, `name`, `title` тип innodb
`id` - auto_increment primary key
выполняю
INSERT INTO `tbl` (`name`, `title`)
VALUES ("1234", "1234"), ("1234", "1234"), ("1234", "1234"), ("1234", "1234") и т.д.
мне после вставки нужно знать какие ид. я вставил. т.е. у меня должен быть массив ид. там дальше я ими пользуюсь.
 

Glazyrin Sergey

Новичок
Сначала извлекаете ваш последний id из таблицы
Затем лочите таблицы на вставку(так как у innodb row-level locking).
Затем после вставки своей пачки вытаскиваете список id которые больше чем ваше последнее id

-~{}~ 30.01.09 13:54:

И не забудьте снять лок таблитцы
 

x-yuri

Новичок
Glazyrin Sergey а почему так сложно, если уж лочить таблицы на запись, то номера последовательно должны идти или нет?

-~{}~ 30.01.09 12:58:

alex77 а зачем тебе?
 

Glazyrin Sergey

Новичок
А если там очень большая пачка вставляется.
Это негарантирует того, что где то какой то другой не вставится. Мы не знаем сколько будет обрабатываться запрос.

-~{}~ 30.01.09 14:02:

Хотя возможно вы правы x-yuri - но имхо все равно лучше лочить. Хотя интересно услышать мнение весьма почтенных гуру :)
 

alex77

Новичок
Сначала извлекаете ваш последний id из таблицы
Затем лочите таблицы на вставку(так как у innodb row-level locking).
Затем после вставки своей пачки вытаскиваете список id которые больше чем ваше последнее id
Большое спасибо, попробую этот вариант.
 

x-yuri

Новичок
alex77 если использовать этот вариант, то первый пункт можно пропустить и в 3-ем использовать LAST_INSERT_ID
а что за задача?
 
Сверху