SELECT FOR UPDATE NOWAIT 与 Oracle 更新查询的交互 SQL

SELECT FOR UPDATE NOWAIT interaction with Update query for Oracle SQL

我目前在 table 上使用 SELECT FOR UPDATE NOWAIT 来防止多个线程执行相同的查询。在执行的同时,另一个线程可能 运行 UPDATE 在某些行上查询相同的 table.

这两个查询之间的确切交互是什么? UPDATE 查询 return 时会出现异常还是会阻塞直到 SELECT FOR UPDATE NOWAIT 完成?

当您使用 SELECT FOR UPDATE NOWAIT 时,任何其他并发 select 更新或更新其候选集至少匹配相同行之一的更新将需要等到行级别锁定已释放或不确定。

如果您使用另一个 select 进行更新而不是更新,您可以使用 nowait 或跳过锁定子句来修改此默认行为。