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

Qual é o propósito de SELECT ... *FOR UPDATE*?


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

Tem a ver com o bloqueio da tabela nas transações. Digamos que você tenha o seguinte:
START TRANSACTION;
SELECT .. FOR UPDATE;
UPDATE .... ;
COMMIT;

após a execução da instrução SELECT, se você tiver outro SELECT de um usuário diferente, ele não será executado até que sua primeira transação atinja a linha COMMIT.

Observe também que FOR UPDATE fora de uma transação não tem sentido.