在 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