Dalam bidang pengurusan pangkalan data, selalunya mungkin diperlukan untuk memastikan bahawa operasi dilaksanakan secara atom, mengelakkan sebarang konflik atau ketidakkonsistenan. Ini benar terutamanya apabila berurusan dengan transaksi serentak yang mungkin cuba mengubah suai data yang sama. Dalam artikel ini, kami menangani senario tertentu di mana mengunci pada baris InnoDB yang tidak wujud dikehendaki.
Persoalan yang dikemukakan ialah: Bagaimanakah seseorang boleh memastikan bahawa nama pengguna tidak wujud dalam pangkalan data dan kemudian memasukkannya sebagai baris baharu tanpa mengambil risiko sebarang gangguan antara operasi SELECT dan INSERT? Penyelesaian konvensional yang melibatkan LOCK IN SHARE MODE atau FOR UPDATE, yang lazimnya berkesan untuk baris sedia ada, gagal dalam kes ini.
Dilema asas terletak pada kekurangan mekanisme MySQL untuk mengunci rekod yang tidak wujud dengan berkesan. Sesi serentak boleh mengunci baris yang tidak wujud secara serentak "UNTUK KEMASKINI", yang boleh menyebabkan kebuntuan atau ralat kunci pendua apabila cuba memasukkan.
Untuk menavigasi cabaran ini, seseorang mesti mempertimbangkan pendekatan alternatif:
Dengan memahami batasan keupayaan penguncian MySQL dan menggunakan alternatif yang sesuai, pentadbir pangkalan data boleh memastikan integriti data mereka dan mengelakkan kemungkinan konflik apabila berurusan dengan baris yang tidak wujud.
Atas ialah kandungan terperinci Cara Mengunci Baris Tidak Wujud dalam InnoDB: Dilema dan Penyelesaian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!