Dalam contoh kode yang Anda berikan, semua pembacaan baris itu akan melihat nilai lama hingga transaksi tersebut dilakukan.
1) Pertimbangkan contoh kode yang dijalankan dua kali secara bersamaan, dengan nilai yang sama X. Jika instance A telah berjalan select ... for updatemaka ia telah mengunci baris itu sampai komit. Mesin virtual B, melakukan hal yang sama, akan memblokir mencoba mengambil kunci dengan cara yang sama. Hanya ketika A melakukan, B dapat melanjutkan. B kemudian akan mendapatkan nilai A yang tertinggal dalam pembaruan terakhirnya.
Jika Ytergantung pada nilai apa yang select ... for updatedibaca kueri, atau bacaan lain di bagian 'kompleks', maka ini akan memiliki efek yang sama seperti jika dijalankan secara seri - Anda tidak mendapatkan kondisi balapan di mana salah satu hasilnya akan dibuang.
Jika Ymurni hasil dari query kompleks di tengah, kemudian jalankan secara paralel tanpa select ... for updatekeduanya akan melakukan pembaruan yang sama.
2) for shareakan memungkinkan pilihan lain pada baris itu untuk melanjutkan, tetapi akan menyebabkan hal lain mencoba select ... for updateatau update ...memblokir sampai selesai. Jika kode sampel dijalankan dua kali, secara bersamaan, mereka akan menemui jalan buntu saat mencapai updatepernyataan, menyebabkan salah satu dari mereka dibatalkan.
3) Tidak. Melakukan ini berbahaya, karena pembaca dapat membaca bidang yang setengah diperbarui. (Atau baca sisa bidang yang diperbarui setelah awal membaca.) Itu juga dapat merusak konsistensi, menunjukkan kepada pembaca nilai yang diperbarui setelah dimulainya transaksi.