newpdv
@newpdv
Web-devekioer

MySQL не возвращает результат

Добрый день!

Есть проблема, MySQL не возвращает только что добавленную строку с вероятностью 50%

Выполняются запросы:
SET AUTOCOMMIT=0
START TRANSACTION
INSERT INTO log_table (order_sum) VALUES (100)
SELECT LAST_INSERT_ID()
COMMIT


Затем, через некоторое время (обычно 2-5 минут) выполняется запрос:
SELECT order_sum FROM log_table WHERE order_id = $order_id


Где $order_id равен результату LAST_INSERT_ID()

Но SELECT не возвращает строку, mysql_num_rows = 0

Если этот запрос выполнить руками - все нормально выводиться.

P.S. Для SELECT используется mysql_pconnect, если заменить на mysql_connect - проблема исчезает.
  • Вопрос задан
  • 2589 просмотров
Пригласить эксперта
Ответы на вопрос 1
EvgenijDv
@EvgenijDv
C/C++ programmer
LAST_INSERT_ID([expr])
Возвращает последнюю автоматически сгенерированную величину, которая была внесена в столбец AUTO_INCREMENT.
Значение последнего сгенерированного ID сохраняется на сервере для данного конкретного соединения и не будет изменено другим клиентом. Оно не будет изменено даже при обновлении другого столбца AUTO_INCREMENT конкретной величиной (то есть, которая не равна NULL и не равна 0). При внесении большого количества строк с помощью одной команды INSERT функция LAST_INSERT_ID() возвращает значение для первой внесенной строки. Причина этого заключается в том, что можно легко воспроизвести точно такую же команду INSERT на другом сервере. Если задано значение аргумента expr в функции LAST_INSERT_ID(), то величина аргумента возвращается функцией и устанавливается в качестве следующего значения, которое будет возвращено функцией LAST_INSERT_ID().
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы