Transaction yapısı SQL de bütün halindeki işlemleri bir blok halinde uygulamaya yarar. Bir işlemi gerçekleştirmek için yapacağımız bütün komutların başarı ile gerçekleşmesi sonucu işlemlerimiz database e yansır, aksi takdirde herhangi bir hata almamız durumunda ise o an a kadarki yapılan işlemler iptal edilerek geri alınır.
Mesela transaction yapılarının kullanımının neden gerekli olduğunu anlamak için şu örneğe bakalım. Bir bankamatik işlemi düşünün. Herhangi bir hesaba para havale edeceksiniz yada fatura vs. yatıracaksınız. Gerekli bilgileri girdiniz ve ardından onayladınız. yapılacak işlemler belirlidir. Sizden para çıkacak ve karşı kişi yada kurumun hesabına yatacaktır. Hangi sıra ile yapacak olursak olalım, işlemin ortasındayken server bağlantısının koptuğunu, internetin yada elektriğin kesildiğini düşünün. Böyle bir durumda ya para hesabınızdan çıkmış fakat karşıya ulaşmamış olacak (Para bankanın hesabında kalır) yada ilk önceliği karşıya aktarma olarak düşünürsek bu seferde faturanızı yada havalenizi yapmış olup hemde paranız kesilmemiş olacak (kısmen iyi bir durum : ) )
işte bu gibi genellikle güvenlik ve para işlerinde transaction yapıları sık sık kullanılmaktadır. Anlattığım sisteme şema üzerinde bakarsak daha net anlayacağız.
Ana hatları ile TRANSACTION 4 bölümden oluşur
Şimdi sıra ile bu yapıları inceleyelim.
BEGIN TRANSACTION
Bu komut her kullanıldığında yeni bir transaction başlatır. İşlemleri onaylamak yada iptal etmek için ardından gelecek Commit veya Rollback komutunu bekler.
Kullanım Şekli;
BEGIN TRANSACTION
SQL KOMUTLARI
SQL KOMUTLARI
SQL KOMUTLARI...
ROLLBACK TRANSACTION
Bu komut ile başlatılan BEGIN TRANSACTION dan itibaren yapılan bütün işlemler iptal edilir.
Kullanım Şekli;
BEGIN TRANSACTION
SQL KOMUTLARI
SQL KOMUTLARI
SQL KOMUTLARI...(SQL exception) // !!!HATA!!!
ROLLBACK TRANSACTION
COMMIT TRANSACTION
Bu komut ile başlatılan BEGIN TRANSACTION dan itibaren yapılan bütün işlemler onaylanır. Eğer bir transaction yapılmışsa ardından yapılan işlemlerin kaydedilmesi için kesinlikle COMMIT TRANSACTION gelmelidir.
Kullanım Şekli;
BEGIN TRANSACTION
SQL KOMUTLARI
SQL KOMUTLARI
SQL KOMUTLARI...
COMMIT TRANSACTION