--举例说明
--第一步 BEGIN TRAN; UPDATE dbo.Material_SO_PipeOrder SET OrderNO = '修改后'; --第三步 COMMIT TRAN;
--第二步 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SELECT * FROM dbo.Material_SO_PipeOrder;
执行步骤:
1.执行第一步:开启事务,进行数据修改,获取表的排它锁,但并不提交事务;
2.执行第二步:设置隔离级别为READ UNCOMMITED(未提交读);即允许在有事务未提交的情况读取数据;但因为修改事务还没有提交,所以只能读取旧的数据,即脏数据;
3.执行第三步:提交事务,此时,如果再次执行第二步,可能得到的结果会与未提交情况下查询的结果不同;
注意:系统默认隔离级别为READ COMMITED(已提交读),因此如果不加这句
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
将隔离级别修改,第二步查询操作会被一直阻塞下去,直到第三步事务提交后,才会读取数据