Vous pouvez utiliser un SELECT FOR UPDATE
. Dans votre transaction, commencez par sélectionner les lignes que vous souhaitez "verrouiller", quelque chose comme ceci :
SELECT * from TABLE where id = 123 FOR UPDATE;
Si deux transactions différentes tentent de le faire en même temps, MySQL fera attendre la seconde jusqu'à ce que la première ait validé la transaction. De cette façon, vous serez assuré que la deuxième transaction ne regarde la ligne qu'une fois la première terminée.