我们可以插入到一个表如果TABLOCK被一些其他查询已经在SQL Server应用在桌子上?

问题描述:

我想插入使用insert into...select语句表中的一些记录(含TABLOCK)。但我无法这样做。我们可以插入到一个表如果TABLOCK被一些其他查询已经在SQL Server应用在桌子上?

事情是一些其他查询已经在表上应用TABLOCK。这是原因吗?

当我试图插入没有tablock时,它正在插入。

截断和删除语句也不起作用。

WITH (TABLOCK)更改SQL Server的锁定行为 - 锁定整个表而不锁定受影响的行。

所以,如果你有一个INSERT操作下去,它会放置一个独家,表范围锁 - 没有其他的操作现在可以访问该表以任何方式,直到持有锁是第一笔交易就完成了。

没有(TABLOCK)提示,SQL Server只被放置在插入的行独占锁 - 任何其他行仍然可以访问(甚至可以更新或删除)。

WITH (TABLOCK)是一个大沉重的大锤 - 使用它注意!