2017-06-12 3 views
0

すべての分離タイプを調べました。SQL Server分離レベルの問題

しかし、私が望むモードが見つかりませんでした。

トランザクション中に他のトランザクションで読み取ることができます。 しかし、更新と削除のデータは追加されません。例えば

(擬似コード):

は、このような分離レベルがあります

create table abc 
(id uniqueidentifier primary key) 

Create proc procMain 
trans isolation level **??????** 
insert abc (id) values (newid()) 
Waiting 10 minute 
commit 

Create proc procREAD 
select * from abc 

Create proc procAdd 
insert abc (id) values (newid()) 

create proc procUpdate 
update abc id = newid() 

create proc procDelete 
delete from abc 


now; 
exec procMain (abc table access read only and for other access: LOCKED) 

(waiting...) 

exec procRead (OK) (Readable) 
exec procAdd (NO - never) (locked) 
exec procUpdate (NO - never) (locked) 
exec procDelete (NO - never) (locked) 

おかげで...? (トランザクション分離レベル?)

+0

データの更新や削除を禁止する分離レベルはありません。それは孤立レベルが何をすべきかではありません。 – TcKs

+0

実際には、シリアライズレベルを選択します。しかし、テーブル全体がロックされています。行ベースの直列化分離レベルはありますか? –

答えて

1

並べ替えREAD COMMITTED SNAPSHOTデータベース設定を設定すると、READ COMMITTEDセッションは実行中トランザクションによってブロックされません。しかし、彼らは行の "最後に知られている良い"バージョン、すなわち現在のトランザクションが開始される前の状態を見るでしょう。

David

+0

私はこれが最も穏やかな変種だと思います。 – TcKs

0

あなたはREAD UNCOMMITTEDを探しています。 Learn more here.これは汚れた読み取りにつながることを心に留めてください。

関連する問題