“设置交易级别”是否需要开始交易?

时间:2010-12-10 15:14:32

标签: sql-server transactions isolation-level

在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

2 个答案:

答案 0 :(得分:3)

TRANSACTION ISOLATION LEVEL设置是连接级别设置。没有必要将它包装在交易中。

话虽如此,你知道你会从这个环境中读取脏读等内容吗?

您可以使用锁定提示(例如:

)逐个查询地完成相同的操作

SELECT * FROM MyTable WITH (NOLOCK)

答案 1 :(得分:1)

SET TRANSACTION ISOLATION LEVEL与BEGIN / COMMIT / ROLLBACK不同

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

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