【发布时间】:2016-08-24 06:08:46
【问题描述】:
我有一个事务隔离级别设置为读取未提交的 SP。 例如
Create Procedure TrailSP
AS
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
BEGIN TRY
UPDATE TrialTable
SET TrailColumn ='Update'
WHERE TrailID=1
--this is followed by more updates and selects
END TRY
BEGIN CATCH
RETURN -1;
END CATCH
RETURN 0;
我想知道的是,我在 SP 中给出的第一个更新会在执行时立即提交,还是会在 Sp 结束时与其余逻辑一起提交。
【问题讨论】:
-
您的程序中是否存在丢失和/或重复数据?将隔离级别设置为未提交读就像为过程中的每个查询添加 nolock 提示。 sqlblogcasts.com/blogs/tonyrogerson/archive/2006/11/10/…
-
这是我必须用于存储过程的标准格式的一部分。所以,不能删除它
-
您是说您的每个程序都使用该隔离级别吗?您确实需要阅读该提示并了解其真正含义。这不是一些神奇的“快速”按钮。这意味着您的任何程序都不准确。如果准确性很重要,那么您需要从公司中删除这种做法。
标签: sql sql-server tsql transactions