4

鉴于以下更新声明:

UPDATE @TableVariable
SET city = T2.city
FROM @TableVariable TV
INNER JOIN dbo.TABLE_1 T1 WITH (NOLOCK)
    ON  (TV.customer_id = T1.customer_id)
INNER JOIN dbo.TABLE_2 T2 WITH (NOLOCK)
    ON  (T1.address_id = T2.address_id)

是否会遵守 TABLE_1 和 TABLE_2 上的 (NOLOCK) 提示?

4

2 回答 2

8

是否会遵守 TABLE_1 和 TABLE_2 上的 (NOLOCK) 提示?

是他们会。

请注意,一般来说,这种行为是非常错误的,如果你认为你真的需要这个,很可能你应该重新设计你的数据库和/或应用程序。

提示的目的是什么NOLOCK?为什么要用脏数据更新表变量?

于 2010-11-01T15:15:18.400 回答
1

NoLock 提示几乎以任何方式提高服务器生产力。但是,在访问数据时可以安全地使用 (NOLOCK) 提示,或者保证在那个时刻不会发生变化(例如,一旦数据部分发布到 DB 它将保持不变,或者您知道当前数据部分不会被更改由其他用户),或者如果获取旧数据或新数据都没有关系(例如,某些数据经常更改,并且无论如何都不需要保存最新的数据)。以其他方式,您可能会在不同的表中获得数据差异......

于 2010-11-03T14:20:41.057 回答