我正在开发一个从 Teradata DWH 获取一些数据的应用程序。DWH 开发人员告诉我LOCK ROW FOR ACCESS
在所有SELECT
查询之前使用以避免延迟对该表的写入。
非常熟悉 MS SQL Servers 的WITH(NOLOCK)
提示,我认为LOCK ROW FOR ACCESS
它是等价的。但是,INSERT
或UPDATE
语句不允许使用LOCK ROW FOR ACCESS
(我不清楚为什么会失败,因为它应该应用于语句选择的表,而不是我插入的表):
-- this works
LOCK ROW FOR ACCESS
SELECT Cols
FROM Table
-- this does not work
LOCK ROW FOR ACCESS
INSERT INTO SomeVolatile
SELECT Cols
FROM PersistentTable
我已经看到LOCKING TABLE ... FOR ACCESS
可以使用它,但不清楚它是否符合我的需要(NOLOCK
等效 - 不要阻止写入)。
问题:在 语句中选择时,我应该使用什么提示来最大程度地减少写入延迟?INSERT