SQL-Anweisungen sind atomar. Das heißt, wenn Sie so etwas ausführen:
UPDATE Cars SET Sold = Sold + 1
Niemand kann den Sold
ändern Variable während dieser Anweisung. Er wird immer um 1 erhöht, auch wenn jemand anderes gleichzeitig dieselbe Anweisung ausführt.
Das Problem tritt auf, wenn Sie Anweisungen haben, die voneinander abhängen:
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
Zwischen diesen Abfragen kann ein anderer Benutzer die Tabelle Autos ändern und Verkauft aktualisieren. Um dies zu verhindern, schließen Sie es in eine Transaktion ein:
BEGIN;
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
COMMIT;
Transaktionen werden von InnoDB unterstützt, aber nicht von MyISAM.