ComeçarComece de graça

XACT_ABORT e THROW

Os clientes mais ricos do banco onde você trabalha decidiram doar 0,01% do seu current_balance para uma organização sem fins lucrativos. Você é responsável por preparar o script para atualizar as contas desses clientes, mas deve fazer isso apenas para as contas com current_balance acima de US$ 5.000.000. A diretora do banco disse que, se não houver pelo menos 10 clientes de alto patrimônio, você não deve realizar essa operação, porque ela quer entrevistar mais clientes.

Você prepara um script e, entre as várias formas de fazer isso, decide usar XACT_ABORT em combinação com THROW. Assim, se o número de linhas afetadas for menor ou igual a 10, você pode lançar um erro para que a transação seja revertida.

Este exercício faz parte do curso

Transações e tratamento de erros no SQL Server

Ver curso

Instruções do exercício

  • Use a configuração adequada de XACT_ABORT.
  • Inicie a transação.
  • Se o número de linhas afetadas for menor ou igual a 10, lance o erro usando a instrução THROW, com o número 55000.
  • Faça o commit da transação se o número de linhas afetadas for maior que 10.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

-- 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
		___ ___; 
Editar e executar o código