開始使用免費開始

發生錯誤時回復交易

第一天上班,你接到的任務是設定銀行內部在款項轉帳時要記錄的交易。

你想先準備一個簡單的指令碼,將 $100 從 account_id = 1 轉到 account_id = 5。接著,將這些異動寫入 transactions 資料表。你覺得自己都寫對了,但身為謹慎的工作者,你還是想再確認一次!

事實上,你的確犯了錯。你沒有替帳號 5 新增交易,卻誤插入到帳號 500,而那個帳號根本不存在。

為了避免未來再出錯,你寫的指令碼應在發生錯誤時將所有變更「回復(rollback)」。如果一切正常,則應提交(commit)交易。

本練習屬於課程

SQL Server 的交易與錯誤處理

檢視課程

練習說明

  • 開始交易。
  • 更正操作中的錯誤。
  • 若沒有錯誤就提交交易。
  • CATCH 區塊中回復交易。

動手互動練習

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

BEGIN TRY  
	-- Begin the transaction
	BEGIN ___;
		UPDATE accounts SET current_balance = current_balance - 100 WHERE account_id = 1;
		INSERT INTO transactions VALUES (1, -100, GETDATE());
        
		UPDATE accounts SET current_balance = current_balance + 100 WHERE account_id = 5;
        -- Correct it
		INSERT INTO transactions VALUES (500, 100, GETDATE());
    -- Commit the transaction
	___ TRAN;    
END TRY
BEGIN CATCH  
	SELECT 'Rolling back the transaction';
    -- Rollback the transaction
	___ ___;
END CATCH
編輯並執行程式碼