SET TRANSACTION ISOLATION LEVEL


トランザクション内のロック動作を指定する。
主なオプションは以下の通り。


・READ UNCOMMITTED

他のトランザクションで変更されたが、まだコミットされていない行を読み取れる。
読み取った値は他のトランザクションで変更された値となる(ダーティリード)


・READ COMMITTED

他のトランザクションで変更されたが、まだコミットされていないデータを読み取れない。(ダーティリード防止)
SQL Serverでデフォルトの値


・REPEATABLE READ

他のトランザクションで変更されたが、まだコミットされていないデータを読み取れない。(ダーティリード防止)
また、このトランザクション内で発行されたSELECTは共有ロックとなり、他のトランザクションから更新できない


・SNAPSHOT

トランザクションの各ステートメントで、トランザクション全体で一貫性のあるデータを読み取るようにする。
このオプションを指定するにはALLOW_SNAPSHOT_ISOLATION をONにする必要がある。


・SERIALIZABLE
さらに細かく指定するためのオプション。



使用例

set transaction isolation level READ COMMITTED

select	*
From	customer


詳しくはこちら↓
http://msdn.microsoft.com/ja-jp/library/ms173763.aspx


動作確認環境:SQL SERVER 2008 Express Edition