Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Добрый день!
Пожалуйста, подскажите, а то никак не пойму как быть...
При чтении записи из БД можно заблокировать строку, что бы ее не могли поменять другие запросы, пока не отработает SELECT:
SELECT * FROM table FOR UPDATE;
А как быть со строкой при операции UPDATE?
Например, есть строка в таблице со счетом. ИЗ этого счета постоянно списываются средства при помощи UPDATE table SET `sum`= 'xxx' WHERE `id`=ID
Все эти UPDATE работают с одной строкой (пусть ID=1) и обернуты в транзакцию.
Скажите, как то можно блокировать эту строку, что бы если запустится параллельно другая транзакция, она не могла ни прочитать текущее значение sum, пока не отработает запущенная транзакция (ожидала окончания транзакции что бы получить верное sum) и не запускалась пока работающая транзакция не будет окончена?
Спасибо!
Неактивен
Для начала уточните запрос. Пусть будет SET `sum`=`sum`-100. Или в транзакции сначала SELECT, а потом апдейт? Затем попробуйте выполнять несколько параллельных транзакций в разных уровнях изоляции.
Неактивен
Страниц: 1