Kenan k?l??aslan

  • Baca Hesabı
  • Sürtünme Kaybı
  • Diferansiyel Denklem
  • Denklem Çözümü
SQL Server

SQL Server Transaction Yönetimi

SQL server’ın çalışmasında önemli bir birim transactionlardır. Transactionlar yapılacak bir birim iştir.

Peş peşe bir işlem için insert, update ve delete komutları ile veri değişikliği yapılmak istendiğinde, veri bütünlüğünü korumak, kayıpları ortadan kaldırmak için transaction'lar kullanılır. Tek bir update yada delete komutu için gerekli değildir. Bu işlemler grup halinde çalıştığında transaction önemli hale gelir.

Transaction Önemi önemini şöyle açıklayalım. Örneğin bir bankada A kişisi, B kişisine para gönderiyor. A kişisinin parası azalıyor, B kişisinin ise artıyor. Eğer A kişisinin parasını azaltan UPDATE deyimi çalışıp, herhangi bir sebeple B kişisinin parasını artıran UPDATE komutu çalışmadığında bu para kaybolmuş olacaktır. Ancak, transaction ile birlikte bu işlem yapılırsa, herhangi bir kayıp yaşanmaz, çünkü A kişisinin parası transaction geri alınacağı için iade olmuş olur. A kişisine para gönderilemedi mesajı verilir.

Transaction bulunan bir kodun kaba kodu

1- Transaction başlat

2- Update, delete, insert komutlarını çalıştır.

3- Hata kontrolü yap ( @@error ile)

4- Eğer hata varsa geri al

5- Yoksa onayla

Transaction Başlatma

Transaction aşağıdaki gibi başlatılabilir

BEGIN TRAN
BEGIN TRANSACTION
-- Transaction'a isim ver
BEGIN TRAN isim

Transaction Geri Alma

Transaction aşağıdaki kod ile geri alınır.

ROLLBACK TRAN
ROLLBACK TRANSACTION
-- ismi bilinen Transaction'ın geri alınması
ROLLBACK TRAN isim

Transaction Onaylama

Transaction aşağıdaki kod ile onaylanır.

COMMIT TRAN
COMMIT TRANSACTION
-- ismi bilinen Transaction onaylanması
COMMIT TRAN isim
Transaction'ın Çalıştığını Görelim

Aşağıdaki örnekte, önce transactionu başlatacağız, tabloyu listeleyeceğiz ve içeriğini silip yeniden listeleyeceği, geri alıp yeniden listeleyeceğiz.

Test veritabanında aşağıdaki kodu sırası ile çalıştırınız.

TRANSACTION başlat

BEGIN TRAN

tbl_personel tablosunu listele

Select * from tbl_personel

tbl_personel tablosunun tüm içeriğini sil

DELETE FROM tbl_personel

tbl_personel tablosunu listele içeriğinin silinmiş olduğunu gör

Select * from tbl_personel

tbl_personel tablosundaki tüm bilginin silinmiş olduğunu, tablonun boşaldığını gördük. Şimdi TRANSACTION'ı geri alalım ve tabloyu yeniden listeleyelim.

ROLLBACK TRAN
Select * from tbl_personel
Transaction'ın Yazılım Uygulama Örneği
BEGIN TRAN  -- transaction başlat

-- bolum değeri 2 olanları sil
DELETE FROM tbl_personel where bolum=2 
-- personel tablosuna veri ekle
insert tbl_personel (bolum) values (2)

IF @@error <> 0  --hata kontrolü yap (sıfırdan farklı ise hata var, değilse yok)
	ROLLBACK TRAN  -- hata var işlemi geri al
ELSE
	COMMIT TRAN -- hata yok işlemi onayla

-- transaction hata durumuna göre ya geri alındı yada onaylandı.
-- personel tablosunda bolum değeri 2 olanları listele
SELECT * FROM tbl_personel WHERE bolum=2
beyaz_sayfa_en_alt_oval