sql >> Database >  >> RDS >> Mysql

Is het verhogen van een veld in MySQL atomair?

Het schrijven is atomair, maar een toename vereist ook een leesbewerking. Dus de vraag is:weet je zeker dat het lezen veilig is, met andere woorden, weet je zeker dat een andere thread die de verhoging uitvoert, niet dezelfde waarde krijgt om te worden verhoogd? Ik heb twijfels. De 100% juiste manier om dit te doen zou zijn.

-- begin transaction here

select counter from myCounters where counter_id = 1 FOR UPDATE;

-- now the row is locked and nobody can read or modify its values

update myCounters set counter = ? where id = 1;

-- set ? to counter + 1 programmatically

commit; -- and unlock...


  1. MySQL direct INSERT INTO met WHERE-clausule

  2. Zoeken met accenten in sqlite (Android)

  3. ontwerpdatabase met betrekking tot tijdattribuut

  4. Pakket heeft al 50 toastjes op de post gedaan. Niet meer laten zien