sql >> Database teknologi >  >> RDS >> Mysql

MySQL samtidighed, hvordan virker det og skal jeg håndtere det i min ansøgning

SQL-sætninger er atomare. Det vil sige, hvis du udfører noget som dette:

UPDATE Cars SET Sold = Sold + 1

Ingen kan ændre Solgt variabel under denne erklæring. Den øges altid med 1, selvom en anden udfører den samme sætning samtidigt.

Problemet opstår, hvis du har udsagn, der afhænger af hinanden:

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

Mellem disse forespørgsler kan en anden bruger ændre tabellen Biler og opdatere Solgt. For at forhindre dette skal du pakke det ind i en transaktion:

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

Transaktioner understøttes af InnoDB, men ikke af MyISAM.




  1. Den angivne nøgle var for lang; max nøglelængde er 1000 bytes

  2. Hvordan ændrer jeg tabelkolonnedatatype på mere end 1 kolonne?

  3. Hvordan bygger man næste og tidligere links med php?

  4. MySQL FULLTEXT virker ikke