XACT_ABORT ve THROW
Çalıştığın bankanın en varlıklı müşterileri, current_balance tutarlarının %0,01’ini bir sivil toplum kuruluşuna bağışlamaya karar verdi. Müşteri hesaplarını güncelleyecek betiği (script) hazırlamak senin görevin; ancak bunu yalnızca current_balance değeri 5.000.000 $’dan fazla olan hesaplar için yapmalısın. Banka müdürü, en az 10 varlıklı müşteri yoksa bu işlemi yapmaman gerektiğini, çünkü daha fazla müşteriyle görüşmek istediğini söylüyor.
Bir betik hazırlıyorsun ve bunu yapmanın çeşitli yolları olsa da XACT_ABORT ile THROW kombinasyonunu kullanmayı seçiyorsun. Böylece, etkilenen satır sayısı 10’dan az veya 10’a eşitse bir hata fırlatıp işlemi geri aldırabilirsin.
Bu egzersiz
SQL Server'da İşlemler ve Hata Yönetimi
kursunun bir parçasıdırEgzersiz talimatları
XACT_ABORTiçin uygun ayarı kullan.- İşlemi (transaction) başlat.
- Etkilenen satır sayısı 10’dan az veya 10’a eşitse,
THROWdeyimini 55000 numarasıyla kullanarak hatayı fırlat. - Etkilenen satır sayısı 10’dan fazlaysa işlemi onayla (COMMIT).
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
-- Use the appropriate setting
SET XACT_ABORT ___;
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance - current_balance * 0.01 / 100
WHERE current_balance > 5000000;
IF @@ROWCOUNT <= 10
-- Throw the error
___ ___, 'Not enough wealthy customers!', 1;
ELSE
-- Commit the transaction
___ ___;