MySQL и PDO: Может PDO :: lastInsertId теоретически не работает?

Я размышлял над этим некоторое время.

Рассмотрим веб-приложение огромных размеров, в котором, скажем, миллионы SQL запросы выполняются каждую секунду.

Я запускаю свой код:

$q = $db->prepare('INSERT INTO Table
                 (First,Second,Third,Fourth)
          VALUES (?,?,?,?)');
$q->execute(array($first,$second,$third,$fourth));

Затем сразу же после этого я хочу получить автоматически увеличивающийся идентификатор этого последнего запроса:

$id = $db->lastInsertId();

Возможно ли, что lastInsertId завершится ошибкой, то есть получить идентификатор какой-то запрос на вставку SQL, который был выполнен между моими двумя блоками кода?

Вторичный:

Если он может завершиться ошибкой, как лучше всего устранить эту возможную утечку?

Будет ли безопаснее создать еще один SQL-запрос для получения правильного идентификатора из базы данных, просто чтобы быть уверенным?

11
задан Mattis 8 May 2011 в 23:45
поделиться