Zacznij terazZacznij za darmo

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

Zobacz kurs

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
		___ ___; 
Edytuj i uruchom kod