с помощта на select ... for update
заявката в транзакцията трябва да ви даде семантиката, която искате - други актуализации ще бъдат заключени, а други сесии, които се опитват да вземат същото заключване, ще бъдат блокирани, докато не извършите:
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