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

Transações MySQL e inserções simultâneas


Você precisa colocar ambas as conexões no nível de isolamento de transação serializável para evitar o cenário que você está descrevendo, definindo o tx_isolation em cada conexão com:
SET @@tx_isolation = SERIALIZABLE;

ou
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;

ou definindo o nível de isolamento global com:
SET @@global.tx_isolation = SERIALIZABLE;

ou
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;

que é herdado por qualquer conexão aberta posteriormente. Nesse nível, as transações serão bloqueadas em qualquer consulta se outra transação já estiver em andamento, ou seja. uma transação já emitiu uma consulta (leitura ou gravação) nas mesmas tabelas.

Consulte a documentação do mysql para mais detalhes.