sql >> Databasteknik >  >> RDS >> Mysql

MySQL samtidighet, hur fungerar det och behöver jag hantera det i min applikation

SQL-satser är atomära. Det vill säga om du kör något sånt här:

UPDATE Cars SET Sold = Sold + 1

Ingen kan ändra Såld variabel under detta uttalande. Den ökas alltid med 1, även om någon annan kör samma programsats samtidigt.

Problemet uppstår om du har påståenden som är beroende av varandra:

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

Mellan dessa frågor kan en annan användare ändra tabellen Bilar och uppdatera Såld. För att förhindra detta, slå in det i en transaktion:

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

Transaktioner stöds av InnoDB, men inte av MyISAM.




  1. Hämta namnet på anropsproceduren eller funktionen i Oracle PL/SQL

  2. hur man får alla mysql tuple-resultat och konverterar till json

  3. Hur man delar upp en kommaseparerad sträng i Oracle

  4. FEL 2002 (HY000):Kan inte ansluta till den lokala MySQL-servern via uttaget '/var/run/mysqld/mysqld.sock' (2)