【发布时间】:2015-12-27 19:34:24
【问题描述】:
我正在阅读有关快照隔离优势的信息。快照隔离级别可防止脏读、不可重复读和幻读。但在我下面提到的测试中,我可以看到幻读正在发生。所以我的问题是快照隔离如何防止幻读?
create table ABC(id int, name varchar(100))
insert into abc
values
(1,'a'),
(2,'b'),
(3,'c')
alter database xyz
set allow_snapshot_isolation on
-----session 1-----
set transaction isolation level snapshot
begin transaction
update abc
set name = name + '1'
where id between 1 and 3
----session 2---------
set transaction isolation level read committed
begin transaction
insert into abc
values
(2,'inserted')
commit transaction
-------session 1 --------
commit transaction
因此,在我上面的 id = 2 测试值中,允许插入不应该被允许的插入值。
【问题讨论】:
标签: sql-server