我有一个名为[Test]的表,它有一列[Id] int。
我打开一个事务,在表中插入一行而不提交它。
begin tran
insert into [Test]([Id]) values(1)
在另一个请求中,我想从表[Test]中选择数据。 如何立即只读取已提交的数据?
Readcommited表提示持有一个锁。
select * from test with(readcommitted)
谢谢。
答案 0 :(得分:3)
select * from test with(readpast)
只要具有未提交数据的事务只有行锁,它就会工作。否则,请查看两个快照隔离备选方案(假设您至少使用SQL Server 2005 +)。
答案 1 :(得分:1)
我认为您正在寻找事务隔离级别设置:http://msdn.microsoft.com/en-us/library/aa259216(SQL.80).aspx
使用隔离级别SERIALIZABLE可确保您无法读取未提交的数据,但同时会降低服务器性能。