我正在尝试将with(NOLOCK)放在更新查询上:
UPDATE pth_patchLookup with(nolock) SET ScanDateTime = Getdate() WHERE RegID = 312但我得到了以下信息:
NoLock hint is supported only with Select statement and not with update, insert and delete.有没有什么方法可以让我在这个更新查询上应用一个‘NOLOCK’?
谢谢你的帮助
发布于 2014-02-18 23:09:50
(NOLOCK)禁用共享锁而不是排它锁。您可以使用Read Committed隔离级别,以便在select语句上放置排它锁。
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
UPDATE pth_patchLookup SET ScanDateTime = Getdate() WHERE RegID = 312发布于 2016-05-19 02:32:18
那这个呢?
UPDATE TOP (1000) v
SET idSupervisor = a.supervisor
FROM dbo.Venda_2014 v WITH ( NOLOCK )
INNER JOIN #supervidores_presentes a WITH (NOLOCK) ON v.IdVendedor = a.vendedor AND v.idEmpresaOriginal = a.empresa
WHERE IdDistribuidor IN ( 40 )
AND ISNULL(v.idSupervisor,0) = 0
AND datAnoMesRef >= '201501'
Go对我来说工作得很好。
发布于 2014-02-19 01:02:32
since 是一个select (仅)提示,对于较老的程序员来说,这是一个坏习惯,因为它在SQL Server7中几乎是强制性的,但从SQL Server2000开始,它几乎是不必要的。该提示特别告诉引擎,select可以读取行,即使它处于未提交事务的中间。正因为如此,你可能会遇到脏读或鬼读。
我强烈建议您阅读有关隔离级别的信息,以了解如何满足您的特定系统需求。
Obs:提示不是命令,您只是建议引擎接受提示,但引擎可以决定不使用它。
https://stackoverflow.com/questions/21856563
复制相似问题