Você pode usar um
SELECT FOR UPDATE
. Dentro de sua transação, comece selecionando as linhas que você deseja "bloquear", algo assim: SELECT * from TABLE where id = 123 FOR UPDATE;
Se duas transações diferentes tentarem fazer isso ao mesmo tempo, o MySQL fará a segunda esperar até que a primeira tenha confirmado a transação. Dessa forma, você terá a certeza de que a segunda transação só olhará para a linha depois que a primeira for concluída.