mysql — проблема mysql_insert_id при вставке данных параллелизма

Насколько надежен mysql_insert_id() в конкурентном состоянии? Я имею в виду, когда несколько пользователей вставляют данные одновременно, будет ли эта функция возвращать истинный идентификатор или она будет возвращать вставленный идентификатор другого пользователя?

Движок стола — MyISAM.

4

Решение

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

От MySql документация,

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

4

Другие решения

imho, даже если несколько пользователей вставляют .. это будет последовательно в выполнении вашей программы.

от php.net

«mysql_insert_id () действует на последний выполненный запрос, обязательно вызовите mysql_insert_id () сразу после запроса, который генерирует значение. «

Также

Использование этого расширения не рекомендуется. Вместо этого следует использовать расширение MySQLi или PDO_MySQL. См. Также MySQL: выбор руководства по API и соответствующие часто задаваемые вопросы для получения дополнительной информации. Альтернативы этой функции включают в себя:

mysqli_insert_id()
PDO::lastInsertId()

Вы также можете проверить это ссылка с dev.mysql где говорится, что

«На значение mysql_insert_id () влияют только операторы, выпущенные в рамках текущего клиентского соединения. На него не влияют операторы, выпущенные другими клиентами».

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector