トランザクション分離レベル

詳しくは、
https://www.microsoft.com/japan/msdn/sqlserver/columns/webtech/webtech3.aspx
http://www.atmarkit.co.jp/fnetwork/rensai/sql27/sql1.html


なのですけど、長いので、自分用に要約して・・・

非コミット読み取り(READ UNCOMMITTED)
ダーティーリード指定。
Commitしていないものも読み込む。
コミット済み読み取り(READ COMMITTED)
Commit済のものしか読み込まない。
トランザクション実行中、他のトランザクションからのInsertやUpdateも、他のトランザクションがCommitしていれば読み込む。
再読み込み可能読み取り(REPEATABLE READ)
Commit済のものしか読み込まない。
対象となるすべてのテーブルの対象データが、トランザクション実行中に変更されないことを保証する。
トランザクションの対象となるテーブルに新規にデータが追加されたり、対象ではないデータが削除されたりすることは防止しない。
直列化(SERIALIZABLE)
Commit済のものしか読み込まない。
対象となったオブジェクトを完全にロックし、ほかのトランザクションからのデータの挿入や更新を不可能にする。
トランザクションが並行することなく順に実行されることから、「直列化」と呼ばれている。


上から
・全部オッケ
・Commitしてりゃ全部オッケ
・更新はダメだけど、Commit済の追加や削除はオッケ
・自分の用が済むまで、変更は全部排除