我正在开发一个从 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