Ето 3 различни подхода:
Атомна актуализация
update table set tries=tries+1 where condition=value;
и ще бъде направено атомарно.
Използвайте транзакции
Ако трябва първо да изберете стойността и да я актуализирате в приложението си, вероятно ще трябва да използвате транзакции. Това означава, че ще трябва да използвате InnoDB, а не MyISAM таблици. Вашата заявка ще бъде нещо като:
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;
ако транзакцията е неуспешна, може да се наложи да я опитате отново ръчно.
Схема на версията
Често срещан подход е да въведете колона за версия във вашата таблица. Вашите заявки биха направили нещо като:
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;
Ако тази актуализация не успее/ върне 0 засегнати реда, някой друг е актуализирал таблицата междувременно. Трябва да започнете отначало – тоест да изберете новите стойности, да изпълните логиката на приложението и да опитате актуализацията отново.