sql >> Databáze >  >> RDS >> Mysql

Souběžnost MySQL, jak to funguje a musím to zvládnout ve své aplikaci

Příkazy SQL jsou atomické. To znamená, že pokud provedete něco takového:

UPDATE Cars SET Sold = Sold + 1

Nikdo nemůže změnit Sold proměnná během tohoto příkazu. Vždy se zvýší o 1, i když někdo jiný současně provádí stejný příkaz.

Problém nastane, pokud máte příkazy, které na sobě závisí:

a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;

Mezi těmito dotazy může jiný uživatel změnit tabulku Auta a aktualizovat Prodáno. Chcete-li tomu zabránit, zabalte jej do transakce:

BEGIN;
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
COMMIT;

Transakce jsou podporovány InnoDB, ale ne MyISAM.




  1. Co je ekvivalent DATALENGTH() v MySQL?

  2. Najděte v tabulce výsledků rozdíl mezi vedoucím a předchozím

  3. Vložení databáze php nefunguje podle plánu

  4. Syntaxe SQL aktualizačního dotazu s vnitřním spojením