SQL Server Trancsaction İşlemi

Kısaca transaction işlemini özetlememiz gerekirse büyük projelerde birbirini takip eden bazı işlemler yapmamız gerekiyor ama bu işlemlerin başında, ortasında, sonunda hata olduğunda veya bir şekilde yarıda kesildiğinde istenilmeyen bir veri eksikliği sonucu çıkacaktır.

SQL Server’da Trancsaction işlemi

Düşününki personel bilgisini Personel adlı tablonuza kaydettikten sonra personele ait detay bilgilerinide PersonelDetay tablosuna kaydediyorsunuz bunun üzerinden örnek verecek olursak Personel tablosuna kullanıcı tarafından girilen bilginin genel kısmını kaydettiniz personelin diğer detay bilgilerini ise örnek olarak şifre, mail adresi, ev adresi v.b bilgileri’de PersonelDetay tablosuna kaydedeceksiniz ama bir hata ile karşılaştınız veya bir şekilde PersonelDetay tablosuna kaydı gerçekleştiremediniz kullanıcının şifre, mail adresi gibi bilgisinin kaydedildikten sonra projeye girişi sağlanacaktı belkide ama şimdi ise Personel’in genel bigisi kaydolmuşken kullanıcıya ait detayla bir şekilde kaydolmadı bu durumda transaction işleminin ehemmiyeti ortaya çıkıyor kullanıcı bu sorunu kendi yöntemine göre çözüme kavuşturmak için belkide kayıt olamadığını düşünüp tekrar kayıt yapıcak gibi düşündüğümüzde hep veritabanı açısında pek sağlıklı bilgiler yer almayacak hemde olması gereken tek kayıttan 1’den fazla olacak büyük projelerde böyle bir hataya yer verildiğinde ise durumun ehemmiyeti kat kat artmaktadır.

Bu kadar laf yeter 🙂

Şimdi ise SQL Server’da Begin Transaction ve Commit Transaction Keyword’lerini kullanarak bu bloklar arasındaki işlemlerden biri dahi gerçekleşmezse BEGIN…COMMIT blokları arasındaki tüm işlemler geri alınacaktır.

Örnek Syntax

Üsttede belirtildiği gibi isterseniz BEGIN TRAN – COMMIT TRAN yazabilirsiniz istersenizde BEGIN TRANSACTION – COMMIT TRANSACTION şeklidende yazabilirsiniz.

Şöyle bir örnekle anlatmaya çalışalım altta yer alan kodda sutun1 adlı alan int tipinde ilk insert cümlemizdeki aktarmak istediğimiz değer 3 bunda sorun yok fakat 2.insert’ümüzde a karakteri bulunmakta işte burada hata verecektir. Kodumuzun altındada gördüğünüz gibi ilk kayıt başarıyla eklendş ikincisinde ise veritürü integer olan bir alana varchar türünde eklyemediği için hata verdi.

Begin Tran – Commit Tran blokları arasındaki işlemlerde kullanılan tablolar otomatik olarak kilitlenecektir nedeni ise karşılaşan bir hata sonrasında işlemlerin geri alınabilmesinde yaşanabilecek veri kaybını engellemek için olduğunu söyleyebiliriz.

Bir Cevap Yazın