| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
| Нет нужно все упаковать в одну транзакцию. Как раз для этой задачи подойдет - если провалиться один запрос - мускул сделает откат всех действий, безопасно и рационально. |