Du kan använda en SELECT FOR UPDATE
. Inuti din transaktion börjar du med att välja raderna som du vill "låsa", ungefär så här:
SELECT * from TABLE where id = 123 FOR UPDATE;
Om två olika transaktioner försöker göra detta samtidigt, kommer MySQL att få den andra att vänta tills den första har genomfört transaktionen. På så sätt kan du vara säker på att den andra transaktionen bara tittar på raden efter att den första är klar med den.