开始使用免费开始使用

在 TRY...CATCH 结构中检查 @@TRANCOUNT

账户 10 的持有人在抽奖中获奖,将获得 $200。您准备了一个简单脚本,把这 $200 加到账户 10 的 current_balance 上。您认为自己都写对了,但还是想先检查一下代码。

事实上,您在加钱时犯了一个低级错误:SET current_balance = 'current_balance' + 200。您把 'current_balance' 写成了字符串,从而导致报错。

您编写的脚本应在发生错误时回滚所有更改,并检查当前是否有打开的事务。若一切正常,则应提交该事务,同样需要检查当前是否有打开的事务。

本练习是课程的一部分

SQL Server 中的事务与错误处理

查看课程

练习说明

  • 开启事务。
  • 纠正运算中的错误。
  • TRY 代码块内,检查是否存在事务并提交它。
  • CATCH 代码块内,检查是否存在事务并将其回滚。

交互式实操练习

通过完成这段示例代码来试试这个练习。

BEGIN TRY
	-- Begin the transaction
	___ ___;
    	-- Correct the mistake
		UPDATE accounts SET current_balance = 'current_balance' + 200
			WHERE account_id = 10;
    	-- Check if there is a transaction
		IF ___ > 0     
    		-- Commit the transaction
			___ ___;
     
	SELECT * FROM accounts
    	WHERE account_id = 10;      
END TRY
BEGIN CATCH  
    SELECT 'Rolling back the transaction'; 
    -- Check if there is a transaction
    IF ___ > 0   	
    	-- Rollback the transaction
        ___ ___;
END CATCH
编辑并运行代码