Můžete použít SELECT FOR UPDATE . Uvnitř transakce začněte výběrem řádků, které chcete „uzamknout“, něco takového:
SELECT * from TABLE where id = 123 FOR UPDATE;
Pokud se o to pokusí dvě různé transakce současně, MySQL nechá druhou počkat, dokud ta první transakci nepotvrdí. Tímto způsobem budete mít jistotu, že druhá transakce se podívá na řádek až poté, co s ním bude provedena první.