Du måste sätta båda anslutningarna i serialiserbar transaktionsisoleringsnivå för att undvika scenariot du beskriver, antingen genom att ställa in tx_isolation
på varje anslutning med:
SET @@tx_isolation = SERIALIZABLE;
eller
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
eller genom att ställa in den globala isoleringsnivån med:
SET @@global.tx_isolation = SERIALIZABLE;
eller
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
som ärvs av varje senare öppnad anslutning. På den nivån kommer transaktioner att blockera eventuella förfrågningar om en annan transaktion redan pågår, dvs. en transaktion har redan skickat en fråga (läs eller skriv) på samma tabeller.
Se mysql-dokumentationen för ytterligare information.