我必须从一个过度更新的表中获取数据。脏读对我来说不是问题。我决定在我的存储过程中使用read uncommitted。
然后我在选择之前添加了这一行:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
我了解到这个代码范围是连接,与nolock不同。我听说你的工作完成后应该把它改成默认值吗?
我必须添加
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
结束了?在工作完成后,我在网上找不到隔离级别更改的任何示例。有什么例子吗?
答案 0 :(得分:2)
一次只能设置一个隔离级别选项,并且在明确更改之前,它仍将为该连接设置。除非语句的FROM子句中的表提示为表指定不同的锁定或版本控制行为,否则事务中执行的所有读取操作都在指定隔离级别的规则下运行。
...
如果在存储过程或触发器中发出SET TRANSACTION ISOLATION LEVEL,则当对象返回控件时,隔离级别将重置为调用对象时生效的级别。例如,如果您批处理中设置REPEATABLE READ,然后批处理调用将隔离级别设置为SERIALIZABLE的存储过程,当存储过程将控制权返回给批处理时,隔离级别设置将恢复为REPEATABLE READ。