通过设置隔离级别-READ UNCOMMITTED读取加了排它锁的数据

--举例说明

--第一步
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;

将隔离级别修改,第二步查询操作会被一直阻塞下去,直到第三步事务提交后,才会读取数据


你可能感兴趣的:(SQL,TRANSACTION)