Mssql Transaction Kullanımı
Sinan Arslan
11:12
Auto Complete Mode Transaction
,
Explicit mode Transaction
,
Implicit Mode Transaction
,
Transaction
Hiç yorum yok
Merhaba ArakadaşlarMssql tarafında transaction kullanımına bakıyor olacağız.Lafı fazla uzatmadan bakalım transaction nedir.
Transaction veri tabanında işlenilebilen en ufak veri yığınıdır
Belirli bir grup işlemin arka arkaya gerçekleşmesine rağmen, işlemlerin seri ya da toplu halde değerlendirilip hepsinin düzgün bir şekilde ele alınması gerektiğinde kullanılır. "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.
Örnek Uygulama Bankada Hesabı olan İki Müşteriden Birinin diğerine Para transferinin gerçekleşmesi
Explicit Transaction :Kullanıcı Tanımlı(software tarafından)yazılan transactiondır.Amacımız birden fazla işi tekbir veri yığınıymış gibi ele alıp tüm işlemler başarılı ise işlemin veri tabanına yansımasını sağlamak olacak
Örnek veri tabanımız Transaction Tipleri
1)Auto Complete Mode Transaction: işlemlerinden otomatik commitlenmesi
2)Implicit Mode Transaction: İşlemlerinden transaction başlatır ama kapatmaz tehlikelidir.Rollback tran tüm transactionların kapatılması durumunda İmplicit mode da yapılan işlemler tehlikeye girer
3)Explicit Mode Transaction: yazılımcının kendi acıp kapadığı işlemlerdir
Tablomuz yandaki gibi olup HesapID kolonu
identity specification bölümünden identity increment ve identity seed 1,1 olarak verilimiştir.Tablomuza iki adet hesap kaydı girelim ve birbirlerine havale yapmalarını sağlayacağımız Transaction işlemimizi gerçekleştirilim
Şimdi Transaction işlemlerimize bakalım.Anlatımı olduğunca basit ele almaya çalıştım.Database'ler bölümünden Bank veri tabanını seçip ilerleyelim
create proc HesapHavale
@gonderen int,@alankisi int,@mebla money
as
begin
begin try
begin tran havaleislemi--transaction işleminin başladığı kısım işlem commit olana veya rollback olana kadar devam eder
Update Hesaplar set HesapBakiye= HesapBakiye-@mebla where HesapID=@gonderen
declare @sayi int
set @sayi=10/0 --hata verdirmek amaçlı yazdım.Divide by zero hatası için
Update Hesaplar set HesapBakiye=HesapBakiye+@mebla where HesapID=@alankisi
commit tran havaleislemi-- işlemlerin Onaylandığı Kısım
end try
begin catch
rollback tran havaleislemi
print 'Hata Meydana geldi'
end catch
end
Kullanımı
exec HesapHavale 1,2,300
Son olarak Acık transactionların sayına bakalım
select @@TRANCOUNT --Acık transactionların sayını verir
Uygulamayı indirmek için Tıklayınız
Kaydol:
Kayıt Yorumları
(
Atom
)
Hiç yorum yok :
Yorum Gönder
Soru Görüş önerileriniz için gmail plus üzerinden + layın müsait olduğumda mutlaka yanıt dönüyor olacağım.