首页 > 解决方案 > Oracle SQL 如何跳过达到特定超时的更新?

问题描述

假设我正在运行一个有循环的查询,但在它的一次迭代中它卡住了,因为其他一些进程正在尝试更新同一行(或其他一些原因)。如何让更新跳过该迭代并继续下一个?

标签: sqloracle

解决方案


没有更多细节,这真的很难回答。但是一般的方法是在开始更新它们的过程之前锁定这些行并跳过任何已经锁定的行。

像这样的东西:

select ...
from the_table_to_update
where ...          --<< your conditions go here
for update nowait  --<< lock the rows, but don't wait for a lock
skip locked;       --<< ignore already locked rows. 

该查询结果的循环(例如通过游标或您的编程语言)


推荐阅读