開始使用免費開始

XACT_ABORT 與 THROW

你任職的銀行中最富有的客戶決定把其 current_balance 的 0.01% 捐給一家非營利組織。你負責撰寫更新客戶帳戶的指令碼,但只針對 current_balance 高於 $5,000,000 的帳戶執行。銀行主管告訴你,如果富有客戶不到 10 位,就先不要進行這項操作,因為她想再訪談更多客戶。

你準備了一個指令碼,在多種作法中,你決定將 XACT_ABORTTHROW 一起使用。這樣一來,如果受影響的筆數小於或等於 10,你就可以擲出錯誤,讓交易被回復。

本練習屬於課程

SQL Server 的交易與錯誤處理

檢視課程

練習說明

  • 使用正確的 XACT_ABORT 設定。
  • 開始交易。
  • 如果受影響的筆數小於或等於 10,使用 THROW 陳述式擲出錯誤,錯誤代號為 55000。
  • 如果受影響的筆數大於 10,提交(COMMIT)交易。

動手互動練習

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

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