我有一个插入查询,如下所示:
INSERT INTO Data1 (column1, column2)
SELECT column1, column2 FROM Data2
此查询大约需要30秒。在30秒内,有人可能会在查询仍在运行时插入,删除或修改Data2表中的数据。如何在相同的交易中阻止或包含更改?
答案 0 :(得分:0)
修改您的查询(NOLOCK) 使用此
INSERT INTO Data1 (column1, column2)
SELECT column1, column2 FROM Data2 WITH(NOLOCK)
这将有效。
答案 1 :(得分:0)
如果您需要绝对肯定必须在插入期间进行数据更改,则可以使用TABLOCKX查询提示...
INSERT INTO Data1 WITH (TABLOCKX) (column1, column2)
SELECT column1, column2 FROM Data2 WITH (TABLOCKX);
这将为您提供两个表的独占锁,直到事务完成。