Oracle SQL:联接语句中的 NOLOCK

Nar*_*nam 3 sql oracle join read-uncommitted locks

我不能在连接语句中的表名后使用 NOLOCK。尝试通过 JOIN 读取未提交的数据是否是一个有效的场景

Gar*_*ers 8

加入无关紧要。Oracle 中不使用 NOLOCK。查询只会看到已提交的数据(以及执行查询的事务中任何未提交的更改)。

您可以编写诸如SELECT * FROM tbl NOLOCKNOLOCK 之类的查询,但 NOLOCK 只是用作表别名并且不会更改查询机制。

  • 另外,(NOLOCK) 提示通常用于执行读取多行的查询,因为 SQL Server 中的默认读取一致性模型使用共享锁,因此读取块写入以及可能发生锁升级。因此,即使使用简单的查询,您也可以锁定整个表或多个表,并且在查询完成之前没有人可以修改数据。Oracle 使用快照读取一致性并且不在内存中存储锁,因此那里没有像锁升级这样的东西。 (2认同)