選擇何時 commit 或 rollback 交易
你任職的銀行決定針對餘額少於 $5,000 的帳戶發放 $100。但行長只願意在符合條件的帳戶不超過 200 個時才發放。
你準備撰寫一段指令來發放這 $100。在多種做法中,你決定先開啟一個交易,接著更新所有餘額少於 $5,000 的帳戶。之後,使用 @@ROWCOUNT 函式檢查這次更新所影響的列數。如果這個數字大於 200,就 rollback 交易;否則就 commit。
你要如何撰寫這段指令?
本練習屬於課程
SQL Server 的交易與錯誤處理
練習說明
- 開始交易。
- 檢查受影響列數是否大於 200。
- 若受影響列數大於 200,則 rollback 交易。
- 若受影響列數小於或等於 200,則 commit 交易。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance + 100
WHERE current_balance < 5000;
-- Check number of affected rows
IF @@ROWCOUNT > ___
BEGIN
-- Rollback the transaction
___ ___;
SELECT 'More accounts than expected. Rolling back';
END
ELSE
BEGIN
-- Commit the transaction
___ ___;
SELECT 'Updates commited';
END