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

Bloqueio de leitura do MySQL SELECT FOR UPDATE


Você está procurando por bloqueios nomeados (cuidado, coisas perigosas, não tente experimentar bloqueios em servidores de produção:D).

Dê uma olhada em:

A1 :Escolha uma string exclusiva para bloquear e use GET_LOCK nele (digamos, GET_LOCK('conversation_' || [id]); se retornar 1 a fechadura é sua. Faça o que quiser e depois ligue para RELEASE_LOCK (considerando todos os cenários possíveis, incluindo erros).

A2 :O segundo parâmetro de GET_LOCK é um tempo limite em segundos . Se a operação expirar GET_LOCK retornará 0 .

Da documentação oficial


Os negritos são meus:
  1. Significa que você só pode manter um bloqueio por conexão (não é um problema para o seu caso de usuário)
  2. Significa que os bloqueios serão liberados assim que você fechar a conexão
  3. Significa que duas conexões diferentes (mesmo do mesmo pool) podem não adquirir a mesma aparência ao mesmo tempo.