sql >> Base de Datos >  >> RDS >> Mysql

Bloquear una fila en una tabla MYSQL durante una transacción

usando un select ... for update la consulta dentro de la transacción debería brindarle la semántica que desea:otras actualizaciones se bloquearán y otras sesiones que intenten tomar este mismo bloqueo se bloquearán hasta que confirme:

START TRANSACTION
SELECT * FROM piggybank WHERE id IN (1, 2) FOR UPDATE;
SELECT amount FROM piggybank WHERE id = 2;
UPDATE piggybank SET amount = amount + 5 WHERE id = 1;
COMMIT