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

Transactions MySQL et insertions simultanées

Vous devez mettre les deux connexions au niveau d'isolement des transactions sérialisables afin d'éviter le scénario que vous décrivez, soit en définissant le tx_isolation à chaque connexion avec :

SET @@tx_isolation = SERIALIZABLE;

ou

SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;

ou en définissant le niveau d'isolement global avec :

SET @@global.tx_isolation = SERIALIZABLE;

ou

SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;

qui est héritée par toute connexion ouverte par la suite. À ce niveau, les transactions bloqueront toutes les requêtes si une autre transaction est déjà en cours, c'est-à-dire. une transaction a déjà émis une requête (lecture ou écriture) sur les mêmes tables.

Voir la documentation mysql pour plus de détails.