sql >> Databasteknik >  >> RDS >> Mysql

Inkrementerar ett fält i MySQL atomärt?

Skrivningen är atomär men en ökning kräver också en läsning. Så frågan är:Är du säker på att läsningen är säker, med andra ord, är du säker på att en annan tråd som gör ökningen inte kommer att sluta med samma värde som ska ökas? Jag har tvivel. Det 100 % korrekta sättet att göra detta skulle vara.

-- 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. Hur väljer du var n:e rad från mysql

  2. Hibernate och Multi-Tenant Database med hjälp av scheman i PostgreSQL

  3. Hur man byter ut en del av en sträng i MySQL

  4. Designa relationer kring en arvsstruktur