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

时间:2015-07-23 08:40:39

标签: sql oracle locking

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

这两个查询之间的确切交互是什么? UPDATE查询是否会返回异常,还是会阻止SELECT FOR UPDATE NOWAIT完成?

1 个答案:

答案 0 :(得分:2)

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

如果您使用另一个select for update而不是update,则可以使用nowait或skip locked子句来修改此默认行为。