XACT_ABORT 與 THROW
你任職的銀行中最富有的客戶決定把其 current_balance 的 0.01% 捐給一家非營利組織。你負責撰寫更新客戶帳戶的指令碼,但只針對 current_balance 高於 $5,000,000 的帳戶執行。銀行主管告訴你,如果富有客戶不到 10 位,就先不要進行這項操作,因為她想再訪談更多客戶。
你準備了一個指令碼,在多種作法中,你決定將 XACT_ABORT 與 THROW 一起使用。這樣一來,如果受影響的筆數小於或等於 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
___ ___;