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

解决方案 »

  1.   

    我的事务是这样的,先从一个表的字段中取出一个值,然后把这个值加上1后再用update写回去
    update我知道可以加锁,但是如果一个人select成功,在还没有update的时候,另一个人又读成功,这时两个人取得的是同一个值,而我的本意是第一个人读完后,要改写该值,所以第二个人读的应该与第一个不一样,也就是只要两个人读的一样就算出错,这种情况能避免吗?
    谢谢大力