НачатьНачать бесплатно

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