Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quel est le but de SELECT ... *FOR UPDATE* ?

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

Cela a à voir avec le verrouillage de la table dans les transactions. Disons que vous avez ce qui suit :

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

après l'exécution de l'instruction SELECT, si vous avez un autre SELECT d'un autre utilisateur, il ne s'exécutera pas tant que votre première transaction n'aura pas atteint la ligne COMMIT.

Notez également que FOR UPDATE en dehors d'une transaction n'a pas de sens.