始める無料で始める

READ UNCOMMITTED 分離レベルを使う

新しい顧客が口座開設のために来店しました。あなたはその顧客データをシステムに登録し、次のようなスクリプトが実行され始めます。

BEGIN TRAN

  INSERT INTO customers (first_name, last_name, email, phone)
  VALUES ('Ann', 'Ros', '[email protected]', '555555555')

  DECLARE @cust_id INT = scope_identity()

  INSERT INTO accounts (account_number, customer_id, current_balance)
  VALUES ('55555555555010121212', @cust_id, 150)

COMMIT TRAN

ちょうどそのとき、マーケティング担当の同僚が全顧客にメール送信を開始しました。なんと車の抽選を行うのです! 彼が実行するスクリプトは、あなたが直前に追加した顧客を含む全顧客のデータを取得します。このスクリプトは、最初の INSERT が行われた後、しかし COMMIT TRAN の前に走り始めました。

なぜそんなことが起きるのでしょうか。

この演習はコースの一部です

SQL Server におけるトランザクションとエラー処理

コースを見る

演習の手順

  • READ UNCOMMITTED の分離レベルを設定してください。
  • customers テーブルから first_namelast_nameemailphone を選択してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

-- Set the appropriate isolation level
___ TRANSACTION ___ LEVEL ___ ___

	-- Select first_name, last_name, email and phone
	SELECT
    	___, 
        ___, 
        ___,
        ___
    FROM customers;
コードを編集して実行