|
|
|
| Ситуация такая что в 1 момент времени 2 пользователя могут попытаться списать какоето колличество товара, так вот сперва ижет зелект потом сразу же идет упдэйт! но 2 зелекта выполняются как бы паралельно еще до 1 упдэйта, и получается что они оба уменьшают количество товара и все уходит в минус.
как сделалть так чтобы они работали тока ПОСЛЕДОВАТЕЛЬНО тоесть сперва запросы и обновления 1 пройдут а потом уже 2.
Транзакции попробывал но чтото не помогло! | |
|
|
|
|
|
|
|
для: ASK_EL
(05.09.2008 в 14:46)
| | юзать локи таблиц | |
|
|
|
|
|
|
|
для: mechanic
(05.09.2008 в 15:04)
| | LOCK TABLES блокирует таблицы для текущего потока сервера. UNLOCK TABLES снимает любые блокировки, удерживаемые текущим потоком. Все таблицы, заблокированные в текущем потоке, неявно разблокируются, когда поток выполняет другой оператор LOCK TABLES либо когда закрывается соединение с сервером.
Тоесть если опять к таблице применится LOCK TABLES
то предыдущий слетит?
Тогда как сделалть так что пока запрос и обновление не выполнится никто не мог прочитать? | |
|
|
|
|
|
|
|
для: ASK_EL
(05.09.2008 в 14:46)
| | Транзакции попробывал но чтото не помогло!
А должны были помочь... тип таблицы у вас какой?
http://webconstructtechnologies.ru/?p=12 | |
|
|
|
|
|
|
|
для: Valick
(05.09.2008 в 16:01)
| | InnoDB
Вроде Решилось просто!
Пока тестится еще, делаю обновление с условием на количество и смотрю сколько строк затронуло изменение.
если 0 то все плохо и возвращаем ошибку. | |
|
|
|
|
|
|
|
для: ASK_EL
(05.09.2008 в 17:00)
| | костыль.. | |
|
|
|