Penguncian secara implisit, ya, tetapi tidak dilakukan oleh executeUpdate()
. Mesin penyimpanan di MySQL menangani penguncian dan pembukaan kunci.
Setiap kali Anda menulis ke tabel MyISAM, kueri Anda menunggu kunci tulis di tabel tersedia, kunci tulis diperoleh, tulis selesai, dan kunci tulis dilepaskan. Tidak ada konkurensi penulisan asli di MyISAM karena setiap pekerja sebenarnya mengantri untuk kunci tulis. Anda tidak mendapatkan kesalahan karena permintaan penulisan diserialisasi.
Situasi dengan InnoDB serupa tetapi sangat berbeda, di mana InnoDB hanya mengunci sebagian tabel, biasanya di tingkat baris, di mana InnoDB dapat mengunci rentang dalam indeks, sehingga mengunci baris pada rentang itu dalam indeks (dan celah yang mendahuluinya). Penguncian ini lebih terperinci daripada penguncian tabel, memungkinkan peningkatan perilaku konkurensi, tetapi tidak ada operasi serentak pada baris yang sama -- setiap pekerja menunggu gembok yang dibutuhkan.
Dalam kedua kasus, kunci diambil secara implisit.