始める無料で始める

トランザクションをいつ 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
コードを編集して実行