Berikut 3 pendekatan berbeda:
Pembaruan atom
update table set tries=tries+1 where condition=value;
dan itu akan dilakukan secara atom.
Gunakan transaksi
Jika Anda perlu memilih nilai terlebih dahulu dan memperbaruinya di aplikasi Anda, Anda mungkin perlu menggunakan transaksi. Itu berarti Anda harus menggunakan InnoDB, bukan tabel MyISAM. Permintaan Anda akan seperti:
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;
jika transaksi gagal, Anda mungkin perlu mencobanya kembali secara manual.
Skema versi
Pendekatan umum adalah memperkenalkan kolom versi di tabel Anda. Kueri Anda akan melakukan sesuatu seperti:
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;
Jika pembaruan itu gagal/mengembalikan 0 baris yang terpengaruh, orang lain telah memperbarui tabel untuk sementara waktu. Anda harus memulai dari awal - yaitu, pilih nilai baru, lakukan logika aplikasi, dan coba perbarui lagi.