SET TRANSACTION ISOLATION LEVEL SERIALIZABLE是为了防止在事务没有完成的时候另一用户,访问事务内,未提交的数据
create table Table1 (a int)
go
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
begin tran
insert table1 values(1) ----这句在事物没有commit前,被另一个用户
----访问是错误的,应为下面有可能会出错 insert table1 values('aaa') ----这句由于类型不一样将报错
----设置了SERIALIZABLE的话就不会发生脏读
commit tran
create table Table1 (a int)
go
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
begin tran
insert table1 values(1) ----这句在事物没有commit前,被另一个用户
----访问是错误的,应为下面有可能会出错 insert table1 values('aaa') ----这句由于类型不一样将报错
----设置了SERIALIZABLE的话就不会发生脏读
commit tran
update我知道可以加锁,但是如果一个人select成功,在还没有update的时候,另一个人又读成功,这时两个人取得的是同一个值,而我的本意是第一个人读完后,要改写该值,所以第二个人读的应该与第一个不一样,也就是只要两个人读的一样就算出错,这种情况能避免吗?
谢谢大力