TRY...CATCH yapısında @@TRANCOUNT kontrolü
Hesap 10’un sahibi çekiliş kazandı ve 200$ ödül alacak. Bu 200$’ı hesap 10’un current_balance değerine eklemek için basit bir betik hazırlıyorsun. Her şeyi doğru yazdığına inanıyorsun ama kodunu kontrol etmeyi tercih ediyorsun.
Aslında parayı eklerken küçük bir hata yaptın: SET current_balance = 'current_balance' + 200. 'current_balance' ifadesini string olarak yazdın ve bu bir hataya yol açıyor.
Oluşturacağın betik, bir hata meydana gelirse açık bir işlem olup olmadığını kontrol ederek tüm değişiklikleri rollback etmelidir. Her şey doğru giderse, yine açık bir işlem olup olmadığını kontrol ederek işlemi commit etmelidir.
Bu egzersiz
SQL Server'da İşlemler ve Hata Yönetimi
kursunun bir parçasıdırEgzersiz talimatları
- İşlemi başlat.
- İşlemdeki hatayı düzelt.
TRYbloğunun içinde, açık bir işlem olup olmadığını kontrol et ve commit et.CATCHbloğunun içinde, açık bir işlem olup olmadığını kontrol et ve rollback yap.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
BEGIN TRY
-- Begin the transaction
___ ___;
-- Correct the mistake
UPDATE accounts SET current_balance = 'current_balance' + 200
WHERE account_id = 10;
-- Check if there is a transaction
IF ___ > 0
-- Commit the transaction
___ ___;
SELECT * FROM accounts
WHERE account_id = 10;
END TRY
BEGIN CATCH
SELECT 'Rolling back the transaction';
-- Check if there is a transaction
IF ___ > 0
-- Rollback the transaction
___ ___;
END CATCH