开始使用免费开始使用

XACT_ABORT 与 THROW

您所在银行中最富有的一批客户决定将其 current_balance 的 0.01% 捐给一家非营利组织。您负责编写脚本来更新客户账户,但只对那些 current_balance 超过 $5,000,000 的账户执行。银行主管还告知您:如果富裕客户少于 10 人,就不要进行该操作,因为她还想再面谈一些客户。

您准备了一段脚本。在多种实现方式中,您决定将 XACT_ABORTTHROW 结合使用。这样一来,如果受影响的行数小于或等于 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
		___ ___; 
编辑并运行代码