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.

1
2
3
4
5
6
CREATE TABLE abank
(
musteriid INT PRIMARY KEY IDENTITY(1,1),

hesap INT
)

Şimdi de tablomuz daki hesaplara biraz para yatıralım;

1
2
INSERT INTO abank VALUES(1500)
INSERT INTO abank VALUES(1500)

Ve şimdi transaction için bir Stored procedure oluşturalım;

1
2
3
4
5
6
7
8
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

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.

1
2
3
SELECT * FROM abank

EXEC sp_havaleyaps 3,4,60

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

Kayıt güncelleme Update

Veri tabanımızda kayıtları güncelleştirmek için Update komutunu kullanırız. Uptade, insert into ile delete ‘in birleşimi gibidir. Eski kayıtı siler yenisini ekler.

Ör. Tablomuz da ki tüm kitapların fiyatını güncelleştirmek için;

1
UPDATE tablom SET kitapfiyati = 200

gibi kullanırız. Seçili bir değeri güncelleştirmek, sadece kitapno’su 5 olan kitabın fiyatını güncelleştirmek için

1
UPDATE tablom SET kitapfiyati = 400 WHERE kitapno= 5

Or kullanarak iki değeri de güncelleştirebiliriz; kitapno 3 ve 5 olanları güncelleştir,

1
UPDATE tablom SET kitapfiyati = 400 WHERE kitapno = 3 OR kitapno = 5

And kullanarak kitapno’su 4 olan türüde hikaye kitabın fiyatını güncelleştirmek için

1
UPDATE tablom SET kitapfiyati = 400 WHERE kitapno = 4 AND kitapturu= 'Hikaye'