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