Coder

31 Ocak 2011

Sql transaction

Bir banka örneği ile konuyu duygusal($) yoldan bağlayalım. Örneğimiz, bir bankadaki iki hesap arasındaki para transferi. Öncelikle banka hesabı için bir abank isimli tablo oluşturalım. Sadece müşteriid ve hesap sutunları olması yeterli.

[cc lang="sql"]create table abank
(
musteriid int primary key identity(1,1),

hesap int
)[/cc]

Şimdi de tablomuz daki hesaplara biraz para yatıralım;
[cc lang="sql"]insert into abank values(1500)
insert into abank values(1500)[/cc]

Ve şimdi transaction için bir Stored procedure oluşturalım;
[cc lang="sql"]create proc sp_havaleyaps (@gonderici int, @alici int, @miktar int)
as
begin
begin tran
update abank set hesap +=@miktar where musteriid = @alici
update abank set hesap -=@miktar where musteriid = @gonderici
commit tran
end[/cc]

Kodları açıklayacak olursak; begin tran(tran transaction kısaltılması, genelde böyle kullanılıyor) ile transaction’ını başlattık. Tablodaki hesaplardan rastgele alıcı ve göndericiyi seçerek birinden diğerine update komutu ile para transferi yani birinden azaltıp diğerini aynı miktarda arttırdık. commit tran ile transaction’nı sonlandırdık yani tamamladık.

Şimdi de oluşturduğumuz procedure çalıştıralım(musteriid 3 olandan, 4 olana 60 lira transfer ediliyor). Ve yapılan transferi görelim.
[cc lang="sql"]select * from abank

exec sp_havaleyaps 3,4,60[/cc]

Kaynak : Cemal Can AKGÜL (Bilge Adam Yazılım Eğitmeni)

Powered by WordPress