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

Was ist der Zweck von SELECT ... *FOR UPDATE*?

http://dev.mysql.com/doc /refman/5.0/en/innodb-locking-reads.html

Es hat mit dem Sperren der Tabelle in Transaktionen zu tun. Angenommen, Sie haben Folgendes:

START TRANSACTION;
SELECT .. FOR UPDATE;
UPDATE .... ;
COMMIT;

Wenn Sie nach der Ausführung der SELECT-Anweisung ein weiteres SELECT von einem anderen Benutzer haben, wird es nicht ausgeführt, bis Ihre erste Transaktion die COMMIT-Zeile erreicht.

Beachten Sie auch, dass FOR UPDATE außerhalb einer Transaktion ist bedeutungslos.