Jika Anda menyetel tingkat isolasi transaksi ke SERIALIZABLE , InnoDB akan secara implisit menambahkan LOCK IN SHARE MODE ke semua SELECT pernyataan.
Mode ini bertentangan dengan kunci yang ditempatkan oleh SELECT FOR UPDATE dan SELECT s akan mengunci.
Namun, perhatikan bahwa InnoDB mungkin mengunci lebih banyak baris daripada memenuhi WHERE kondisi. Ini karena mengunci semua baris dipindai , bukan hanya yang cocok .
Katakanlah, Anda memiliki indeks di col1 dan kueri ini:
SELECT *
FROM mytable
WHERE col1 = 1
AND col2 = 2
FOR UPDATE
menggunakan indeks ini.
Ini akan mengunci semua catatan dengan col1 = 1 , bahkan mereka yang memiliki col2 <> 2