SQL-instructies zijn atomair. Dat wil zeggen, als je zoiets als dit uitvoert:
UPDATE Cars SET Sold = Sold + 1
Niemand kan de Sold
. wijzigen variabele tijdens deze verklaring. Het wordt altijd met 1 verhoogd, zelfs als iemand anders dezelfde instructie tegelijkertijd uitvoert.
Het probleem doet zich voor als u uitspraken hebt die van elkaar afhankelijk zijn:
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
Tussen deze vragen kan een andere gebruiker de tabel Auto's wijzigen en Verkocht bijwerken. Om dit te voorkomen, verpak je het in een transactie:
BEGIN;
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
COMMIT;
Transacties worden ondersteund door InnoDB, maar niet door MyISAM.