VB SQL Aynı Kayıt Engelleme
Veritabanı sistemlerinde, aynı kaydın birden fazla kullanıcı tarafından aynı anda değiştirilmesini önlemek için aynı kayıt engelleme mekanizmaları kullanılır. Bu, veri bütünlüğünü ve tutarlılığını korumak için hayati önem taşır. VB SQL’de, aynı kayıt engelleme, LOCK
ifadesi kullanılarak uygulanır.
LOCK İfadesi
LOCK
ifadesi, belirli bir tablodaki veya tablo görünümündeki bir veya daha fazla satırı kilitler. Bu, diğer kullanıcıların kilitli satırları değiştirmesini veya silmesini engeller. LOCK
ifadesinin genel sözdizimi şu şekildedir:
vb
LOCK [TABLE | VIEW] [table_name] [FOR] [lock_type] [OF] [column_list]
Burada:
table_name
: Kilitlenecek tablo veya tablo görünümünün adıdır.lock_type
: Uygulanacak kilit türüdür.column_list
: Kilitlenecek sütunların bir listesidir (isteğe bağlı).
Kilit Türleri
VB SQL, aşağıdaki kilit türlerini destekler:
- SHARED (Paylaşılan): Diğer kullanıcıların satırları okumasına izin verir, ancak değiştirmesine veya silmesine izin vermez.
- EXCLUSIVE (Özel): Diğer kullanıcıların satırları okumasına, değiştirmesine veya silmesine izin vermez.
- UPDATE (Güncelleme): Diğer kullanıcıların satırları okumasına izin verir, ancak yalnızca kilitleyen kullanıcı satırları değiştirebilir veya silebilir.
Aynı Kayıt Engelleme Örneği
Aşağıdaki VB SQL kodu, Customers
tablosundaki belirli bir müşteri kaydını özel olarak kilitler:
vb
Dim cmd As New SqlCommand("LOCK Customers FOR UPDATE OF CustomerID", conn)
cmd.Parameters.AddWithValue("@CustomerID", 1)
cmd.ExecuteNonQuery()
Bu kod çalıştırıldıktan sonra, başka hiçbir kullanıcı CustomerID
değeri 1 olan müşteri kaydını değiştiremez veya silemez.
Önemli Hususlar
LOCK
ifadesi, bir işlemin başında kullanılmalıdır.- Bir satır kilitlendikten sonra, satır serbest bırakılıncaya kadar kilitli kalır.
- Bir satır kilitliyse ve başka bir kullanıcı aynı satırı kilitleymeye çalışırsa, bir kilitlenme hatası oluşur.
- Aynı kayıt engelleme, çok kullanıcılı ortamlarda veri bütünlüğünü korumak için çok önemlidir.
Faydalı Kaynaklar
- Microsoft Docs: LOCK (Transact-SQL)
- Stack Overflow: VB.NET’te Aynı Kayıt Engelleme
- CodeProject: VB.NET’te Veritabanı Kilitleri