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í.