2010-12-10 82 views
2

在MS SQL Server中,如果我在存储过程中使用“SET TRANSACTION ISOLATION LEVEL”,是否需要将select语句包装在BEGIN/END TRANSACTION块中?以下是否会按预期工作?“设置交易级别”是否需要开始交易?

CREATE PROCEDURE my_sproc AS 
BEGIN 

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 

    SELECT * FROM MyTable 

END 
+0

请在您的文字中解释“预期”是什么? – Oded 2010-12-10 15:18:07

+0

我期望select语句的行为就像我使用过(NOLOCK)提示一样。 (如果我的程序真的很简单,我会这么做) – 2010-12-10 15:35:15

回答

3

TRANSACTION ISOLATION LEVEL设置是连接级别设置。无需将其包装在交易中。

这就是说,你明白你会有这样的设置脏读和等?

您可以通过使用锁提示,如完成的查询,通过查询依据同样的事情:

SELECT * FROM MyTable WITH (NOLOCK)

1

SET事务隔离级别不同的开始/ COMMIT/ROLLBACK

  • 第一个更改隔离与并发设置
  • 第二个定义原子“工作单元”

没有直接的联系或互动:不同的概念