Возможно ли, чтобы mysqli_insert_id возвращал неверный идентификатор в приложениях с высоким трафиком? - PullRequest
6 голосов
/ 16 февраля 2012

В приложении с высоким трафиком возможно ли для mysqli_insert_id() вернуть неправильный идентификатор или перепутать идентификатор между двумя INSERT запросами, выполняемыми почти одновременно?

Ответы [ 4 ]

9 голосов
/ 16 февраля 2012

Нет. mysqli_insert_id возвращает наибольшее значение AUTO_INCREMENT из самого последнего запроса INSERT для текущего соединения. Например, оно никогда не будет перепутано с другим соединением.

2 голосов
/ 16 февраля 2012

Цитата из предыдущего ответа на этот же вопрос:

Посмотрите на http://dev.mysql.com/doc/refman/5.6/en/getting-unique-id.html для получения дополнительной информации, там написано:

"Для LAST_INSERT_ID () последний сгенерированный идентификатор сохраняется в сервер для каждого соединения. Это не изменено другим клиент. Он даже не изменяется, если вы обновляете другое AUTO_INCREMENT столбец с немагическим значением (то есть значением, которое не равно NULL и не 0). Использование столбцов LAST_INSERT_ID () и AUTO_INCREMENT одновременно от нескольких клиентов вполне допустимо. Каждый клиент получит последний вставленный идентификатор для последнего оператора этого клиента казнены. "

Так что вы должны хорошо делать то, что вы хотите, и вы не должны получить странные результаты.

2 голосов
/ 16 февраля 2012

Нет.Как я могу быть так уверен?Потому что это было бы сообщено и исправлено давно время назад.

0 голосов
/ 29 марта 2018

Да, это возможно! Если у вас есть несколько таблиц для вставки с одним и тем же соединением, и ваша последняя вставка была неправильной (например, я пытаюсь вставить неэкранированные кавычки в текст).

Я думаю, что он возвращает последний успешный идентификатор вставки, который может быть из другой таблицы. Я просто потратил час, чтобы найти это. Мир

...