Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Проблема с SELECT+UPDATE


Автор: quiz 8.9.2005, 19:00
Доброго времени суток!
Предисловие:
Есть скрипт на php, назовем его pay.php. В нем по порядку идут запросы к базе, сначала выборка параметров покупателя (кол-во денег на счете), затем выборка параметров товара (сколько единиц товара осталось).
Если у покупателя достаточно денег и на складе есть необходимое ему кол-во товаров, то следует UPDATE, вычитающий из кошелька покупателя стоимость покупки и UPDATE, вычитающий 1 единицу товара из таблицы товаров.

Суть проблемы:
Магазин полон посетителей, 2 покупателя (или 3, 10, 100, 500 покупателей) одновременно покупают один товар. В результате их одновременной покупки со склада вычитается только один товар.
Ситуация 2. Логинимся с 2-х компов под одним логином, покупаем одномременно товар. В результате имеем 2 товара, а деньги платим только за 1. Решается запретом одновременного захода, но все же...

Не понимаю в чем проблема.
Может можно как-то упорядочить апдейты и селекты, чтоб они шли в порядке запросов, а то складывается чувство, что все апдейты откладываются "на потом"

Спасибо

Автор: Secandr 8.9.2005, 21:20
Можно времено закрывать на чтение/запись таблицу

Автор: Рыжий 9.9.2005, 23:39
Нет нужно все упаковать в одну транзакцию.
Как раз для этой задачи подойдет - если провалиться один запрос - мускул сделает откат всех действий, безопасно и рационально.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)