Tsql 如何使肮脏的阅读
这是脏读的一个例子吗 T1和T2事务Tsql 如何使肮脏的阅读,tsql,dirtyread,Tsql,Dirtyread,这是脏读的一个例子吗 T1和T2事务 SET IMPLICIT_TRANSACTIONS OFF 这不是一个肮脏的阅读。有关其作用的详细信息,请参见: 要获得脏读,需要将dbo.table1中的select column1与(NOLOCK)一起放置。With(NOLOCK)读取未提交的数据,如果事务以某种方式回滚,这些数据可能会消失,并且永远不会真正存在 获取脏读的另一种方法是使用:隔离级别读取未提交。下面是一个示例,说明如何通过查看MyCleanTable Id | Value ------
SET IMPLICIT_TRANSACTIONS OFF
这不是一个肮脏的阅读。有关其作用的详细信息,请参见: 要获得脏读,需要将dbo.table1中的select column1与(NOLOCK)一起放置。With(NOLOCK)读取未提交的数据,如果事务以某种方式回滚,这些数据可能会消失,并且永远不会真正存在
获取脏读的另一种方法是使用:隔离级别读取未提交。下面是一个示例,说明如何通过查看
MyCleanTable
Id | Value
----------
1 | I am clean!
2 | I am clean!
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
BEGIN TRAN
SELECT * FROM [MyCleanTable]
Id | Value
----------
1 | I am clean!
2 | I am clean!
Id | Value
----------
1 | I am dirty! ------> "dirty read"
2 | I am clean!
BEGIN TRAN
UPDATE [ConcurrencyDemo].[dbo].[MyCleanTable]
SET [Value] = 'I am dirty'
WHERE [Id] = 1
ROLLBACK;
SELECT * FROM [ConcurrencyDemo].[dbo].[MyCleanTable]
COMMIT;
Id | Value
----------
1 | I am clean!
2 | I am clean!
Id | Value
----------
1 | I am dirty! ------> "dirty read"
2 | I am clean!
BEGIN TRAN
UPDATE [ConcurrencyDemo].[dbo].[MyCleanTable]
SET [Value] = 'I am dirty'
WHERE [Id] = 1
ROLLBACK;
Id | Value
----------
1 | I am clean!
2 | I am clean!
但是第3节的查询读取了一个脏值。这是什么环境?Transact-SQL?是SQL环境