-- Banka işlemi senaryosu
-- Furkan : 1000 tl
-- Barış : 1000 tl
-- Senaryoda Barış 100tl'sini Furkan'a gönderiyor.
-- İşlemler
-- Barış'ın hesabından -100tl düşülür.
-- UPDATE Hesaplar SET Bakiye -= 100 where KullaniciAdi = Baris
-- Elektrik kesildi - hard disk yandı - sistemsel arıza oldu.
-- Furkan'ın hesabına +100tl eklenir.
--UPDATE Hesaplar SET Bakiye += 100 where KullaniciAdi = Furkan
-- Bankamızı oluşturalım.
Create Database BatanBank
-- Veritabanını kullanalım
USE BatanBank
-- Tablomuzu oluşturalım
CREATE TABLE Musteriler
(
MusteriID int primary key identity(1,1) not null,
MusteriAdi nvarchar(150) not null,
Bakiyesi money not null
)
-- Müşterileri ekleyelim.
INSERT INTO Musteriler(MusteriAdi, Bakiyesi) values ('Barış', 1000)
INSERT INTO Musteriler(MusteriAdi, Bakiyesi) values ('Furkan', 1000)
-- Kontrol
SELECT * FROM Musteriler
-- Transcaction işlemi (MUTLAKA TRY-CATCH bloğu ile kullanılır)
BEGIN TRY
BEGIN TRANSACTION-- hareket bilgisi başlatılır.
UPDATE Musteriler SET Bakiyesi -=1000 where MusteriID = 1
SELECT 10/0 -- işlem hatası (donanımsal, elektrik kesintisi ...)
UPDATE Musteriler SET Bakiyesi +=1000 where MusteriID = 2
COMMIT TRANSACTION -- hareket bilgisi hatasız bir şekilde onaylanır.
END TRY
BEGIN CATCH
print 'Transcation işlemi hatalı!'
ROLLBACK TRANSACTION -- hareket bilgisi hataya düşmüsse, bu işlem en başa sarılır.
END CATCH
Hiç yorum yok:
Yorum Gönder