Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è lo scopo di SELECT ... *FOR UPDATE*?

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

Ha a che fare con il blocco della tabella nelle transazioni. Supponiamo che tu abbia quanto segue:

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

dopo l'esecuzione dell'istruzione SELECT, se hai un altro SELECT di un utente diverso, non verrà eseguito fino a quando la tua prima transazione non raggiunge la riga COMMIT.

Nota anche che FOR UPDATE al di fuori di una transazione non ha senso.