XACT_ABORT i THROW
Najbogatsi klienci banku, w którym pracujesz, postanowili przekazać 0,01% swojego current_balance na rzecz organizacji non-profit. Twoim zadaniem jest przygotowanie skryptu aktualizującego konta klientów – ale tylko tych, których current_balance przekracza 5 000 000 $. Dyrektor banku zaznacza, że jeśli takich zamożnych klientów jest mniej niż 10, operacji nie należy przeprowadzać, ponieważ chce wcześniej przeprowadzić więcej rozmów z klientami.
Przygotowujesz skrypt i – spośród kilku możliwych podejść – decydujesz się użyć XACT_ABORT w połączeniu z THROW. Dzięki temu, jeśli liczba zmienionych wierszy wynosi 10 lub mniej, możesz zgłosić błąd, który spowoduje wycofanie transakcji.
To ćwiczenie jest częścią kursu
Transakcje i obsługa błędów w SQL Server
Instrukcje do ćwiczenia
- Użyj odpowiedniego ustawienia
XACT_ABORT. - Rozpocznij transakcję.
- Jeśli liczba zmienionych wierszy wynosi 10 lub mniej, zgłoś błąd za pomocą instrukcji
THROW, podając numer 55000. - Zatwierdź transakcję, jeśli liczba zmienionych wierszy jest większa niż 10.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
-- 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
___ ___;