開始使用免費開始

在 TRY...CATCH 結構中檢查 @@TRANCOUNT

帳戶 10 的持有人中獎,將獲得 $200。你準備了一段簡單的指令碼,要把這 $200 加到帳戶 10 的 current_balance。你認為自己都寫對了,但還是想檢查一下程式碼。

其實你在加錢時犯了個小錯:SET current_balance = 'current_balance' + 200。你把 'current_balance' 寫成字串,這會產生錯誤。

你要撰寫的指令碼應在發生錯誤時,檢查是否有未結束的交易並將所有變更 rollback。如果一切正確,則也要先檢查是否有未結束的交易,再將交易提交(commit)。

本練習屬於課程

SQL Server 的交易與錯誤處理

檢視課程

練習說明

  • 開始交易。
  • 更正運算中的錯誤。
  • TRY 區塊中,檢查是否有交易並提交(commit)。
  • CATCH 區塊中,檢查是否有交易並回復(rollback)。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

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
編輯並執行程式碼