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

Transazioni MySQL e inserimenti simultanei

Devi mettere entrambe le connessioni in un livello di isolamento della transazione serializzabile per evitare lo scenario che stai descrivendo, sia impostando il tx_isolation su ogni connessione con:

SET @@tx_isolation = SERIALIZABLE;

o

SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;

oppure impostando il livello di isolamento globale con:

SET @@global.tx_isolation = SERIALIZABLE;

o

SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;

che viene ereditato da qualsiasi connessione aperta successivamente. A quel livello, le transazioni si bloccheranno su qualsiasi query se è già in corso un'altra transazione, ad es. una transazione ha già emesso una query (lettura o scrittura) sulle stesse tabelle.

Vedi la documentazione di mysql per ulteriori dettagli.