menggunakan select ... for update
kueri di dalam transaksi akan memberi Anda semantik yang Anda inginkan - pembaruan lainnya akan dikunci, dan sesi lain yang mencoba mengambil kunci yang sama ini akan memblokir hingga Anda melakukan:
START TRANSACTION
SELECT * FROM piggybank WHERE id IN (1, 2) FOR UPDATE;
SELECT amount FROM piggybank WHERE id = 2;
UPDATE piggybank SET amount = amount + 5 WHERE id = 1;
COMMIT