PDO получить несколько идентификаторов вставки - PullRequest
5 голосов
/ 09 мая 2011

Выполнение следующего запроса с использованием PDO (на самом деле я использую подготовленные операторы, но та же проблема)

INSERT INTO MyTable(MyField) VALUES('Row1'), ('Row2')

Как получить идентификаторы для записей, относящихся к Row1 иRow2?

$db->lastInsertId() буквально возвращает последний единственный идентификатор.

Достаточно ли взять этот последний идентификатор, вычесть число записей и предположить, что диапазон охватывает все мои записи?Могут ли быть разрывы / прыжки.Этот запрос гарантированно будет атомарным?

1 Ответ

3 голосов
/ 09 мая 2011

Если вы используете таблицы MyISAM, то из-за механизма блокировки на уровне таблицы вы можете получить только заданный диапазон идентификаторов.

После чтения http://dev.mysql.com/doc/refman/5.5/en/innodb-auto-increment-handling.html#innodb-auto-increment-traditional при условии, что вы используете«традиционная» блокировка innodb (что, скорее всего, и есть), а затем для одного оператора набор идентификаторов будет последовательным.

...