Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Bloqueando uma linha em uma tabela MYSQL durante uma transação


usando um select ... for update A consulta dentro da transação deve fornecer a semântica desejada - outras atualizações serão bloqueadas e outras sessões que tentarem obter esse mesmo bloqueio serão bloqueadas até você confirmar:
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