Hier zijn 3 verschillende benaderingen:
Atoomupdate
update table set tries=tries+1 where condition=value;
en het zal atomair gebeuren.
Transacties gebruiken
Als u eerst de waarde moet selecteren en bijwerken in uw toepassing, moet u waarschijnlijk transacties gebruiken. Dat betekent dat u InnoDB moet gebruiken, niet MyISAM-tabellen. Uw vraag zou zoiets zijn als:
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;
als de transactie mislukt, moet u deze mogelijk handmatig opnieuw proberen.
Versieschema
Een veelgebruikte benadering is om een versiekolom in uw tabel te introduceren. Uw vragen zouden zoiets doen als:
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;
Als die update mislukt / 0 betrokken rijen oplevert, heeft iemand anders de tabel ondertussen bijgewerkt. U moet helemaal opnieuw beginnen - dat wil zeggen, de nieuwe waarden selecteren, de toepassingslogica uitvoeren en de update opnieuw proberen.