Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara melakukan kunci baris?

Dengan asumsi bahwa ini adalah server MS SQL, Anda mungkin ingin UPDLOCK , mungkin digabungkan dengan ROWLOCK (Petunjuk tabel ). Saya kesulitan menemukan artikel bagus yang menjelaskan teorinya, tetapi berikut adalah contoh singkatnya:

SELECT id From mytable WITH (ROWLOCK, UPDLOCK) WHERE id = 1 

Pernyataan ini akan menempatkan kunci pembaruan pada baris selama durasi transaksi (jadi penting untuk mengetahui kapan transaksi akan berakhir). Karena kunci pembaruan tidak kompatibel dengan kunci eksklusif (diperlukan untuk memperbarui catatan), ini akan mencegah siapa pun memperbarui catatan ini hingga transaksi berakhir.

Perhatikan bahwa proses lain yang mencoba mengubah catatan ini akan diblokir hingga transaksi selesai, namun akan dilanjutkan dengan operasi tulis apa pun yang mereka minta setelah transaksi berakhir (kecuali jika waktu habis atau dihentikan sebagai proses buntu). Jika Anda ingin mencegah hal ini, maka proses Anda yang lain perlu menggunakan petunjuk tambahan untuk membatalkan jika kunci yang tidak kompatibel terdeteksi, atau melewati catatan jika telah berubah.

Selain itu, Anda tidak boleh menggunakan metode ini untuk mengunci catatan sambil menunggu masukan pengguna . Jika ini adalah niat Anda, maka Anda harus menambahkan semacam kolom "sedang dimodifikasi" ke tabel Anda.

Mekanisme penguncian server SQL benar-benar hanya cocok untuk digunakan untuk menjaga integritas data / mencegah kebuntuan - transaksi umumnya harus disimpan sependek mungkin dan tentunya tidak boleh dipertahankan saat menunggu input pengguna.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengubah nilai kolom identitas secara terprogram?

  2. 6 Cara Mengonversi String ke Nilai Tanggal/Waktu di SQL Server

  3. Cara Menjatuhkan atau Menghapus semua Pemicu dari Database di SQL Server

  4. Mengukur Kinerja Kueri:Biaya Kueri Rencana Eksekusi vs Waktu yang Dibutuhkan

  5. Izin SQL Server pada Procs Tersimpan dengan SQL dinamis