始める無料で始める

一部の行だけでファントムリードを防ぐ

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
___ ___
コードを編集して実行