В приложении с высоким трафиком может ли mysqli_insert_id()
вернуть неверный идентификатор или спутать идентификатор между двумя запросами INSERT
, выполняемыми почти одновременно?
Может ли mysqli_insert_id возвращать неверный идентификатор в приложениях с высоким трафиком?
Ответы (4)
№ mysqli_insert_id
возвращает наибольшее значение AUTO_INCREMENT
из самого последнего запроса INSERT
для текущего соединения. Например, его никогда не спутаешь с другим подключением.
Нет. Как я могу быть так уверен? Потому что об этом сообщили бы и исправили бы давно назад.
Цитата из предыдущего ответа на этот же вопрос:
Посмотрите на 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 одновременно от нескольких клиентов совершенно допустимо. Каждый клиент получит последний вставленный идентификатор для последнего оператора, который выполнил клиент».
Таким образом, вы должны быть в порядке, делая то, что хотите, и вы не должны получать странных результатов.
Да это возможно! Если у вас есть несколько таблиц для вставки с одним и тем же соединением, и ваша последняя вставка была неправильной (например, я пытаюсь вставить неэкранированные кавычки в текст).
Я думаю, что он возвращает последний идентификатор успешной вставки, который может быть из другой таблицы. Я только что потратил час, чтобы найти это. Мир
mysqli_insert_id()
всегда будет возвращать правильный идентификатор.
- person Dharman; 17.06.2020