Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

SQL - Transaction



  September 08, 2018    Labels:,,,,,,,,,,, 

Transaction, daha küçük parçalara ayrılamayan en küçük işlem yığınına denir. Belirli bir grup işlemin arka arkaya gerçekleşmesine rağmen, işlemlerin toplu olarak değerlendirilmesini sağlar. “Transaction”, prensip olarak ya bütün işlemleri gerçekleştirir ya da hiçbirini gerçekleştirmez. İşlemlerden biri dahi başarısız olursa, bu prensip nedeniyle hiçbir işlem olmamış kabul edilir; ancak tüm işlemler başarılı olduğunda” transaction”, içinde gerçekleşen tüm veri değişikliklerini onaylamış demektir. Bu işlemlerin ardı arkasına gelince bir tanesinin bile gerçekleşmemesi veri kaybına neden olacağı anlamına gelmektedir. Bu işlemler sırasında veriler üzerindeki değişikliklerin de tutarlı olması, birbirlerini tamamlayıcı nitelik taşıması gerekir. Bu özellikleri sağlayabilmesi içintransaction kavramı ortaya atılır. Veri tabanı uygulamaları geliştirirken böyle bir hataya sebep olacakları da düşünerek transaction bloğunun içine alınarak işlemler yapılır. Böylece ya hepsi işlenir ya da bütün işlemler geri alınır.

Transaction bloğundaki işlemlerin hepsi başarılı olduğunda “Transaction” Commit (Onaylama)komutu çalışır ve değişiklikler veritabanında gerçekleşmiş olur. Eğer herhangi bir hata oluşursa bu işleyiş bozulur ve hepsi geri alınır o zamanda “transaction” Rollback (Geridönüş) komutu çalışır. Böylece tüm işlemler geri alınır ve en başa dönülür. Bunu yaparak veri kaybetme olasılığımız da sıfıra iner. Aşağıdaki şekilde transaction olayını özetleyerek daha da görsel boyuta taşımak istedik.


Başlıca Transaction Çeşitleri
  • Begin Transaction
  • Save transaction
  • Rollback
  • Commit

Begin Transaction

Begin Transaction komutu yeni bir transaction başlatır. İşlemleri onaylamak için veya iptal etmek için Commit veya Rollback komutunu beklemeye koyuluyor. Kullanım şekli ise aşağıdaki gibidir.

BEGIN TRANSACTION
SQL KOMUTLARI
SQL KOMUTLARI...

Rollback Transaction

Rollback Transaction komutu Begin ile başlatılan işlemlerin hepsini iptal eder. Kullanım şekli ise aşağıdaki gibidir.

BEGIN TRANSACTION
SQL KOMUTLARI
SQL KOMUTLARI
SQL KOMUTLARI...(SQL exception) // !!!HATA!!!
ROLLBACK TRANSACTION

Commit Transaction

Commit Transaction komutu begin Transaction ile başlayan bütün işleri onaylar. Zaten bir transaction gerçekleşmişse ardından mutlaka Commit transaction gelmesi gerekir. Kullanım şekli ise aşağıdaki gibidir.

BEGIN TRANSACTION
SQL KOMUTLARI
SQL KOMUTLARI
SQL KOMUTLARI...
COMMIT TRANSACTION

Save Transaction

Bazen, bir noktaya kadar gelindikten sonra, işlemlerin buraya kadar olanını geçerli kabul etmek isteriz ama bundan sonraki işlemler için de transaction(geri alabilme seçeneği)ne ihtiyaç duyarız. Bu türden durumlarda geri dönüşüm noktalarından faydalanılır. Save Transaction komutu ise geri dönüşüm noktası belirler.

Genel Örnek:

BEGIN TRANSACTION
BEGIN TRY

UPDATE HESAP SET BAKIYE = BAKIYE - 1000
WHERE AD='SAMET' AND SOYAD='ULUTURK'

UPDATE HESAP SET BAKIYE = BAKIYE + 1000
WHERE AD='İBRAHİM' AND SOYAD='BAYRAKTAR'

COMMIT
END TRY
BEGIN CATCH
ROLLBACK
END CATCH

No comments:

Post a Comment