SQL Transaction Nedir?

Transaction genelde yoğun işlem yapılan ve işlemlerin tamamen bitmesinin çok önemli olduğu zamanlarda kullanılır oluşabilecek hatalarda eksik veya hatalı kayıtların girişlerinin engellenmesinde veya alınacak önlemler için kullanılan bir yapıdır.

Yazdığınız sorgularınız Transaction içindeyse işlemlerin hepsi başarılı olana kadar tüm işlemler başarısız sayılır ve böylece veri kaybetme işlemlerinin önüne geçmiş olursunuz.

Basit bir örnekle bu konuyu size anlatırsak, örneğin stok takibi yapılan bir programda kullanıcı stoktan ürün düşmek istedi, kullanıcı stoğu çıkar iken oluşan bir hata sonucu program stok çıkış tablosuna değerleri yazar iken stok miktarlarının tutulduğu kayıtta alanları güncelleyemedi. İşte böyle bir durumda kullanıcı olası bir stok sorgulamasında stoğunda fazla mal göreceği için yapacığı üretim veya stok çıkışları hatalı olacaktır.

Peki Yazılımcı Arkadaş Transaction Kullansaydı Ne Olurdu?

Hata aldığımız için sistem her şeyi geri alırdı ve stok çıkışı yapılamaz böylece stok miktarlarında herhangi bir değişme olmayacaktı.

Sql Server 3 farklı Transaction desteği sağlamaktadır.

  1. Explicit Transactions (Harici)
    Yazılımcının BEGIN TRANSACTION bloğu ile başlattığı trans işlemleridir. Commit ifadesi ile gerçekleşmiş olarak ya da ROLLBACK ifadesiyle hiç gerçekleşmemiş sayılarak sonlandırılır.

  2. Implict Transactions (Dahili)
    Sql serverın bazı kod blokları kullanıldıktan sonra otomatik olarak transaction başlatmasını sağlar. Ancak yazılımcının bunları sonlandırması beklenir. Gereksiz ve zahmetli bir işlemdir. Kullanılması pek önerilmez.

  3. Auto Commit (Otomatik)
    Herhangi bir transaction işlemi kullanılmadı ise Sql server otomatik olarak bu mod ile çalışır. Yığın sql işlemleri, Query analyzer’de 2 GO arasında kullanılan bloklar yada bir defada çalıştırılan sql kodları kapsamı alanına girer ve herhangi bir hata olduğunda otomatik olarak ROLLBACK işlemi uygular.

Burada unutmamanız gereken şey eğer bir Transaction da bir tablonun veri kümesi üzerinde işlemdeyse ikinci bir işlem yapılamaz. Yani siz KalanStok=’50’ olan veri kümesine trans içinde UPDATE işlemi yaparken aynı veri kümesine başka bir update işlemi yapamazsınız. Çünkü sql server Transaction işlemi bitene kadar o kümeyi kilitleyecektir.

Gürkan PAYDAŞ | 2017-10-31 11:01:10