在 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
在 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
该TRANSACTION ISOLATION LEVEL
设置是连接级设置。无需将其包装在事务中。
话虽这么说,你知道你会从这个设置中得到脏读等吗?
您可以使用锁定提示逐个查询完成相同的操作,例如:
SELECT * FROM MyTable WITH (NOLOCK)
SET TRANSACTION ISOLATION LEVEL 与 BEGIN/COMMIT/ROLLBACK 不同
没有直接的联系或互动:不同的概念