Подтвердить что ты не робот

MySQL и вероятность того, что неверный идентификатор будет возвращен LAST_INSERT_ID()

Из того, что я прочитал LAST_INSERT_ID(), извлекается идентификатор последней инструкции insert. Если последний оператор insert запускается в вашем соединении или последний вставка запускается в базе данных для всех подключений? Я предполагаю, что я пытаюсь спросить: на загруженном веб-сайте с базой данных, каковы шансы, что следующий код вернет неправильный идентификатор, и существует ли способ предотвратить блокирование базы данных другим,

INSERT INTO example (string) VALUE ('something');
SELECT LAST_INSERT_ID();

Будет ли PHP mysql_insert_id() лучшим решением, или я просто должен запросить данные, которые были только что вставлены и захватить id таким образом?

4b9b3361

Ответ 1

Является ли последний оператор insert выполняться в вашем соединении или...

Последнее соединение в вашем соединении.

Будет ли PHP mysql_insert_id() быть лучшим решением

Нет, это то же самое.

или я должен просто запросить данные, которые были только что вставлены и захватить id таким образом?

Таким образом, медленнее

Ссылка: http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

Цитата из этой ссылки:

Идентификатор, который был сгенерирован, поддерживается на сервере для каждого подключения. Это означает, что значение, возвращаемое функцией для данного клиента, является первым значением AUTO_INCREMENT, сгенерированным для самого последнего оператора, влияющим на столбец AUTO_INCREMENT этого клиента. Это значение не может повлиять на других клиентов, даже если они генерируют собственные значения AUTO_INCREMENT. Такое поведение гарантирует, что каждый клиент может получить свой собственный идентификатор, не заботясь о деятельности других клиентов, и без необходимости блокировок или транзакций.