ПочатиПочніть безкоштовно

XACT_ABORT і THROW

Найдорожчі клієнти банку, де ви працюєте, вирішили пожертвувати 0,01% свого current_balance неприбутковій організації. Ви відповідаєте за підготовку скрипту для оновлення рахунків клієнтів, але робіть це лише для тих рахунків, у яких current_balance перевищує $5,000,000. Директорка банку каже, що якщо немає принаймні 10 заможних клієнтів, виконувати цю операцію не слід, адже вона хоче опитати більше клієнтів.

Ви готуєте скрипт і, з-поміж кількох способів, вирішуєте використати XACT_ABORT у поєднанні з THROW. Так, якщо кількість змінених рядків менша або дорівнює 10, ви зможете згенерувати помилку, щоб транзакцію було відкотено.

Ця вправа є частиною курсу

Транзакції та обробка помилок у SQL Server

Переглянути курс

Інструкції до вправи

  • Використайте відповідне значення для XACT_ABORT.
  • Почніть транзакцію.
  • Якщо кількість змінених рядків менша або дорівнює 10, згенеруйте помилку за допомогою оператора THROW з номером 55000.
  • Зафіксуйте транзакцію, якщо кількість змінених рядків більша за 10.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

-- 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
		___ ___; 
Редагувати та запускати код