XACT_ABORT 与 THROW
您所在银行中最富有的一批客户决定将其 current_balance 的 0.01% 捐给一家非营利组织。您负责编写脚本来更新客户账户,但只对那些 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
___ ___;