Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mencapai Fungsi SELECT UNTUK KEMASKINI dalam SQL Server?
Mendapatkan Akses Baris Eksklusif dengan SQL Server: Meneroka SELECT FOR UPDATE
Konsep SELECT FOR UPDATE terkenal dalam Oracle, DB2 , dan MySQL, membenarkan pembangun memperoleh kunci eksklusif pada baris sambil mendapatkan data, menghalang transaksi serentak lain daripada mengubah suai yang dipilih data. Walau bagaimanapun, apabila menggunakan SELECT FOR UPDATE dengan SQL Server, terdapat beberapa perbezaan yang ketara.
Dalam kod yang disediakan, percubaan untuk menggunakan WITH (updlock) untuk mencapai penguncian peringkat baris tidak menghasilkan yang diingini. hasilnya, kerana ia juga menyekat sambungan lain daripada memilih baris yang berbeza. Untuk menangani perkara ini, mari kita terokai pelbagai pilihan untuk SELECT FOR UPDATE dalam SQL Server:
ROWLOCK
Petunjuk ROWLOCK boleh digunakan untuk menetapkan penguncian peringkat baris, tetapi ia mengunci keseluruhan baris, walaupun untuk operasi SELECT pada baris yang berbeza. Tingkah laku ini sepadan dengan senario baris yang sama, tetapi bukan senario baris yang berbeza.
updlock, rowlock
Menggabungkan updlock dan rowlock tidak memperbaiki keadaan; ia masih mengakibatkan penyekatan untuk kedua-dua PILIHAN baris yang sama dan berbeza.
xlock,rowlock
Seperti updlock,rowlock, gabungan ini menyediakan penguncian luas, mempengaruhi kedua-dua yang sama dan berbeza barisan pilihan.
baca berulang
Baca berulang ialah tahap pengasingan yang menghalang anomali manipulasi data seperti bacaan hantu. Walau bagaimanapun, ia tidak melakukan penguncian peringkat baris, tidak menawarkan penyelesaian untuk keperluan ini.
DBCC TRACEON (1211,-1)
Bendera surih ini menetapkan pangkalan data -ROWLOCK luas untuk semua operasi baca, mensimulasikan penguncian peringkat baris dengan berkesan. Walau bagaimanapun, ia menjejaskan semua sambungan dan mungkin tidak sesuai dalam semua senario.
rowlock,xlock,holdlock
Gabungan ini juga mengunci keseluruhan baris untuk SELECT, termasuk yang pada berbeza baris.
updlock,holdlock
Serupa dengan rowlock,xlock,holdlock, gabungan ini menyediakan penguncian peringkat baris tetapi memanjangkannya untuk memasukkan HOLDLOCK semantik.
UPDLOCK,READPAST
Untuk tahap pengasingan syot kilat, gabungan ini membenarkan SELECT tanpa kunci baris untuk bacaan yang boleh dilakukan. Walau bagaimanapun, ia tidak menyediakan kunci eksklusif dan mungkin tidak sesuai untuk kes penggunaan ini.
Kesimpulan
Malangnya, tiada pilihan yang diterokai memberikan kelakuan tepat SELECT UNTUK KEMASKINI seperti yang diketahui dalam DBMS lain dengan SQL Server. Walaupun penguncian peringkat baris ialah pilihan melalui ROWLOCK, ia juga mempengaruhi operasi SELECT lain, yang mungkin tidak diingini. Dalam kes sedemikian, menangkap kebuntuan dan isu konkurensi syot kilat mungkin merupakan alternatif yang diperlukan untuk mencapai tahap ketekalan data yang diingini.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Fungsi SELECT UNTUK KEMASKINI dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!