Här är 3 olika tillvägagångssätt:
Atomic-uppdatering
update table set tries=tries+1 where condition=value;
och det kommer att göras atomärt.
Använd transaktioner
Om du måste först välja värdet och uppdatera det i din applikation, behöver du förmodligen använda transaktioner. Det betyder att du måste använda InnoDB, inte MyISAM-tabeller. Din fråga skulle vara något i stil med:
BEGIN; //or any method in the API you use that starts a transaction
select tries from table where condition=value for update;
.. do application logic to add to `tries`
update table set tries=newvalue where condition=value;
END;
om transaktionen misslyckas kan du behöva försöka manuellt igen.
Versionsschema
Ett vanligt tillvägagångssätt är att introducera en versionskolumn i din tabell. Dina frågor skulle göra något i stil med:
select tries,version from table where condition=value;
.. do application logic, and remember the old version value.
update table set tries=newvalue,version=version + 1 where condition=value and version=oldversion;
Om den uppdateringen misslyckas/returerar 0 påverkade rader, har någon annan uppdaterat tabellen under tiden. Du måste börja om från början - det vill säga, välj de nya värdena, gör applikationslogiken och försök uppdateringen igen.