2017-06-12 93 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。请注意,这会导致脏读。