トランザクションをいつ COMMIT または ROLLBACK するかを選ぶ
あなたが働く銀行では、残高が $5,000 未満の口座に $100 を付与することにしました。ただし、支店長は、$5,000 未満の口座が 200 件を超えない場合にのみ付与したいと考えています。
あなたは $100 を付与するスクリプトを用意します。方法はいくつか考えられますが、まずトランザクションを開始し、残高が $5,000 未満のすべての口座を更新することにします。その後、@@ROWCOUNT 関数を使って、更新で影響を受けた行数を確認します。この数が 200 を超える場合はトランザクションをロールバックし、そうでなければコミットします。
このスクリプトはどのように用意しますか?
この演習はコースの一部です
SQL Server におけるトランザクションとエラー処理
演習の手順
- トランザクションを開始します。
- 影響を受けた行数が 200 を超えるか確認します。
- 影響を受けた行数が 200 を超える場合はトランザクションをロールバックします。
- 影響を受けた行数が 200 以下の場合はトランザクションをコミットします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
-- 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