Hata varsa bir işlemi geri almak
İş yerindeki ilk gününde, bankanda para transferi yapıldığında bunun kaydını tutacak işlemleri (transaction) kurma görevi verildi.
account_id = 1 hesabından $100 çıkıp account_id = 5 hesabına gittiği basit bir betik (script) hazırlamak istiyorsun. Ardından bu hareketleri transactions tablosuna kaydedecek. Her şeyi doğru yazdığını düşünüyorsun ama tedbirli biri olarak önce her şeyi kontrol etmeyi tercih ediyorsun!
Aslında bir hata yaptın. 5 numaralı hesap için yeni bir işlem eklemek yerine, var olmayan 500 numaralı hesap için ekledin.
Gelecekteki hataları önlemek için, oluşturduğun betik bir hata oluşursa tüm değişiklikleri geri almalı (rollback). Her şey doğru giderse, işlem (transaction) onaylanmalı (commit).
Bu egzersiz
SQL Server'da İşlemler ve Hata Yönetimi
kursunun bir parçasıdırEgzersiz talimatları
- İşlemi (transaction) başlat.
- İşlemdeki hatayı düzelt.
- Hata yoksa işlemi onayla (commit).
CATCHbloğunda işlemi geri al (rollback).
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
BEGIN TRY
-- Begin the transaction
BEGIN ___;
UPDATE accounts SET current_balance = current_balance - 100 WHERE account_id = 1;
INSERT INTO transactions VALUES (1, -100, GETDATE());
UPDATE accounts SET current_balance = current_balance + 100 WHERE account_id = 5;
-- Correct it
INSERT INTO transactions VALUES (500, 100, GETDATE());
-- Commit the transaction
___ TRAN;
END TRY
BEGIN CATCH
SELECT 'Rolling back the transaction';
-- Rollback the transaction
___ ___;
END CATCH