Transaction Nedir?

Transaction bir veya daha fazla SQL ifadesini bir bütün olarak düşünen ve başarılı olması halinde SQL ifadelerini kalıcı olarak istenilen değişikliği uygulayan veya hata olması halinde değişiklik yapmadan verileri aynı şekilde korunmasını sağlayan işlemdir.

Örneğin bir öğrenci ev sahibinin hesabına 600 TL kira ödeyecektir. Öğrenci para yatırma işlemini onayladığında önce 600 TL bakiyesinden düşürülür daha sonra ev sahibinin hesabına yatırılır. Eğer bu işlemler gerçekleşirken herhangi bir nedenden dolayı kira yatırılmasaydı ev sahibinin hesabına para yatmaz ve öğrencinin hesabından bakiye düşmez. İşte bu gibi kritik işlemlerde yani bir bütünlük olması gereken işlemlerde Transaction kullanılır.

Yukarıda ki SQL ifadelerinde VTYS adında bir veritabanı oluşturduk. VTYS adında veritabanının içine HESAPLAR adınad bir tablo ve bu tabloya ait sayısal tipte(INT) birincil anahtar(primary key) özelliği olan HESAP_NO ve para tipinde(MONEY) BAKIYE adında sütunlar oluşturuldu. Bu tablonun alanlarına HESAP_NO alanına 3541 ve 3542, BAKIYE alanına 1200 ve 1500 olan kayıtlar eklendi.

Yukarıdaki işlemde hesabın 1500 TL arttırılması sırasında bir hata olması durumunda işlem iptal edilse bile gönderen hesaba geri yatırılmayacaktır. Aşağıda ise basit bir transaction işlemi yapalım.

Bir Transaction işlemi farklı veritabanlarında(MSSQL, MySQL, Oracle) başlaması farklıdır. Yukarıda ki ve sonra ki örneklerimizde MS SQL’e göre örneklerimizi yapacağız.

Yukarıda ki işlemde Transaction işlemi BEGIN TRANSACTION ile başlatıldığı tanımlanır. Daha sonrasında yazdığoımız 2 update işlemiyle bakiyelerle ilgili değişiklikler uygulanır ve select işlemi ile ekrana değişiklikler yansıtılır.

t-sql-ornek-1

Ekrana gelen sonuç yukarıda ki gibi olacaktır. HESAP_NO’su 3541 olan kaydın BAKIYE alanı 1200’den 600 TL düşürülmüştür. HESAP_NO’su 3542 olan kaydın BAKIYE alanı 1500’den 600 TL arttırılarak 2100 TL’ye yükseltilmiştir.

Yalnız Transaction en sonunda yazılan ROLLBACK ifadesi bu işlemin kalıcı olarak gerçekleşmesine engeldir. ROLLBACK ifadesi yapılan işlemin kalıcı olarak kaydedilmesini engeller. Bu kod aralığı sadece yazılan Transaction ifadesinin sonucunda ne tür sonuç elde edeceğinizi sağlamış olur.  Bu ifadeyi ilerleyen örneklerde bir hata olduğunda geri alınmasını sağlayarak çalıştıracağız.  Kayıtların tutulduğu tablomuzu kontrol ettiğimizde HESAP_NO’su 3541 olan kaydın 1200, HESAP_NO’su 3542 olan kaydın 1500 TL BAKIYE bilgisi olduğunu göreceğiz.

Yukarıda ki örnekde yapılan değişikliklerin kaydedilmesi için COMMIT ifadesini kullandık. Bu ifade yapılan işlemlerin kalıcı olarak gerçekleşmesini sağlayacaktır.

Bu yazımızda hata denetimli bir transaction örneği yapmadık. En basit anlamda bir transaction işlemi bu yazımızda olduğu gibidir. Hata denetimli  örneklerimizi sonra ki yazılarımızda devam edeceğiz.


Java Developer

Yazıyı Paylaş

Related Articles

Yorum Yaz

© 2020 Onur Arslan. Tüm Hakları Saklıdır. · RSS Yazıları · RSS Yorumları