Anda harus meletakkan kedua koneksi di tingkat isolasi transaksi yang dapat diserialisasi untuk menghindari skenario yang Anda gambarkan, baik dengan menyetel tx_isolation
pada setiap koneksi dengan:
SET @@tx_isolation = SERIALIZABLE;
atau
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
atau dengan menyetel tingkat isolasi global dengan:
SET @@global.tx_isolation = SERIALIZABLE;
atau
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
yang diwarisi oleh koneksi yang dibuka selanjutnya. Pada tingkat itu, transaksi akan memblokir permintaan apa pun jika transaksi lain sedang berlangsung, mis. transaksi telah mengeluarkan kueri (baca atau tulis) pada tabel yang sama.
Lihat dokumentasi mysql untuk detail lebih lanjut.