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
___ ___;