Парралелный доступ к MySQL?

Royal Flash

-=MaestrO=-
Парралелный доступ к MySQL?

При запуске скрипта, автоматичесски создается номер строки (предположим price_id с номером 5) в MySQL при помощи auto_increment. Потом эту самую price_id необходимо записать в переменную: $price_id = 5.

По идее, можно select`ом прочитать последнюю запись (запись с наибольшим значением) и записать ее в $price_id.

Но дело в том, что может случится ситуация, когда первый запуск скрипта создаст в MySQL price_id = 5, и сразуже за этим, следующий парралельный запуск этого-же скрипта, создаст price_id = 6. Когда продолжающий исполнятся скрипт1 запросит максимальное значение price_id, то получит ответ уже не 5, а 6. И в скрипте2 максимальное значение price_id будет равно 6.

Как избежать такой ситуации?
 

Мутник

Новичок
может это тебе поможет? [m]mysql_insert_id[/m], хотя, наверное врядли...

P.S. ты может чуток изменишь логику программки??? а то как то неправильно выходит
 

.des.

Поставил пиво кому надо ;-)
[m]mysql_insert_id[/m] и все будет нормально.
 

Fireball

Новичок
а какой алгоритм работы у этой функции( mysql_insert_id)? если два(22, 222) скрипта параллельно работают с базой, всё корректно будет?
 

alexhemp

Новичок
Fireball

Читайте документацию!
http://www.php.net/manual/ru/function.mysql-insert-id.php

int mysql_insert_id ( [resource link_identifier] )

mysql_insert_id() возвращает ID, сгенерированный колонкой с AUTO_INCREMENT последним запросом INSERT к серверу, на который ссылается переданный функции указатель link_identifier. Если параметр link_identifier не указан, используется последнее открытое соединение.
Очевидно, что в разных скриптах - разные соединения.
 

tony2001

TeaM PHPClub
Long
постоянное соединение - одно на чайлд апача.
чайлд апача ПОСЛЕДОВАТЕЛЬНО выполняет скрипты.
даже если один и тот же скрипт использует одно и то же соединение, то он вызывает mysql_insert_id() ПОСЛЕДОВАТЕЛЬНО, а не одновременно.

просьба все инсинуации на тему прекратить.
 
Сверху