Ответ 1
Операторы SQL являются атомарными. То есть, если вы выполните что-то вроде этого:
UPDATE Cars SET Sold = Sold + 1
Во время этого утверждения никто не может изменить переменную Sold
. Он всегда увеличивается на 1, даже если кто-то другой выполняет один и тот же оператор одновременно.
Проблема возникает, если у вас есть утверждения, которые зависят друг от друга:
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
Между этими запросами другой пользователь может изменить таблицу Cars и обновить Продано. Чтобы предотвратить это, оберните его в транзакцию:
BEGIN;
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
COMMIT;
Транзакции поддерживаются InnoDB, но не MyISAM.