![]() |
|
Модераторы: skyboy |
![]()
|
|
| quiz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 15.8.2005 Репутация: нет Всего: нет |
Доброго времени суток!
Предисловие: Есть скрипт на php, назовем его pay.php. В нем по порядку идут запросы к базе, сначала выборка параметров покупателя (кол-во денег на счете), затем выборка параметров товара (сколько единиц товара осталось). Если у покупателя достаточно денег и на складе есть необходимое ему кол-во товаров, то следует UPDATE, вычитающий из кошелька покупателя стоимость покупки и UPDATE, вычитающий 1 единицу товара из таблицы товаров. Суть проблемы: Магазин полон посетителей, 2 покупателя (или 3, 10, 100, 500 покупателей) одновременно покупают один товар. В результате их одновременной покупки со склада вычитается только один товар. Ситуация 2. Логинимся с 2-х компов под одним логином, покупаем одномременно товар. В результате имеем 2 товара, а деньги платим только за 1. Решается запретом одновременного захода, но все же... Не понимаю в чем проблема. Может можно как-то упорядочить апдейты и селекты, чтоб они шли в порядке запросов, а то складывается чувство, что все апдейты откладываются "на потом" Спасибо |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 6 Всего: 39 |
Можно времено закрывать на чтение/запись таблицу
|
|||
|
||||
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: нет Всего: 20 |
Нет нужно все упаковать в одну транзакцию.
Как раз для этой задачи подойдет - если провалиться один запрос - мускул сделает откат всех действий, безопасно и рационально. Это сообщение отредактировал(а) PHP-Script - 9.9.2005, 23:40 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |