Всем привет. Перечитал много статей по транзакциям и блокировкам в MySQL, но пока так и не понял, что следует использовать для моего случая. Имеется таблица clients с полем balance, где записан баланс пользователя. Пользователь в интерфейсе вводит сумму, которую хочет списать и в результате поле balance должно быть обновлено для данного клиента. Как защитить себя от того, что два процесса могут одновременно считать и записать данные в одну строку. Таблица MyISAM. Заранее благодарен за помощь в этом вопросе!
Существует явная и не явная блокировка.
Так как у тебя механизм хранения MyISAM, то неявная блокировка будет происходить на уровне строк.
Если ты хочешь что бы твои данные были правильно записаны и считаны, то перед записью этих данных явно установи блокировку (Устанавливается на всю таблицу). А после сними ее.
Пример:
LOCK TABLES clients READ LOCAL;
... производим запись (insert, update)...
UNLOCK TABLES;
Здесь:
P.S здесь более подробно
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте! При получения данные из другой таблицы с помощью JOIN нужно забрать только один елемент как это можно реализовать?
Есть список с даннымиНажимая 2 раза, открывается форма с этими детальными данными