4

在 MS SQL Server 中,如果我在存储过程中使用“SET TRANSACTION ISOLATION LEVEL”,是否需要将选择语句包装在 BEGIN/END TRANSACTION 块中?以下内容会按预期工作吗?

CREATE PROCEDURE my_sproc AS
BEGIN

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

    SELECT * FROM MyTable

END
4

2 回答 2

4

TRANSACTION ISOLATION LEVEL设置是连接级设置。无需将其包装在事务中。

话虽这么说,你知道你会从这个设置中得到脏读等吗?

您可以使用锁定提示逐个查询完成相同的操作,例如:

SELECT * FROM MyTable WITH (NOLOCK)

于 2010-12-10T15:17:45.747 回答
1

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

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

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

于 2010-12-10T15:18:17.817 回答