Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sperren einer Zeile in einer MYSQL-Tabelle während einer Transaktion

mit einem select ... for update Die Abfrage innerhalb der Transaktion sollte Ihnen die gewünschte Semantik geben - andere Aktualisierungen werden gesperrt, und andere Sitzungen, die versuchen, dieselbe Sperre zu nehmen, werden blockiert, bis Sie Folgendes festschreiben:

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