一部の行だけでファントムリードを防ぐ
customer_id が 1 から 10 の間にある銀行顧客のデータを分析する必要があります。customers テーブルのうち、customer_id が 1 から 10 の行だけをロックしたいと考えています。そうすることで、これらの行は誰にも変更されず、他のトランザクションはテーブルの残りの部分で作業できます。
顧客を選択して、いくつかの数値演算を再度実行します。(この演習では、これらの演算の内容は重視しません。)その後、customer_id が 1 から 10 の顧客をもう一度選択し、何も変わっていないことを確認します。
このスクリプトはどのように用意すればよいですか?
この演習はコースの一部です
SQL Server におけるトランザクションとエラー処理
演習の手順
- ファントムリードを防ぐため、適切な分離レベルを設定します。
- トランザクションを開始します。
- ロックしたい顧客を選択します。
- トランザクションをコミットします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
-- Set the appropriate isolation level
___ ___ ___ ___ ___
-- Begin a transaction
___ ___
-- Select customer_id between 1 and 10
SELECT *
FROM customers
___ customer_id ___ ___ AND ___;
-- After completing some mathematical operation, select customer_id between 1 and 10
SELECT *
FROM customers
___ customer_id ___ ___ AND ___;
-- Commit the transaction
___ ___