假设我正在运行一个有循环的查询,但是在其中一个迭代中它会被卡住,因为其他一些进程正在尝试更新同一行(或其他原因)。如何让更新跳过该迭代并继续下一步?
没有更多细节,这真的很难回答。但一般的方法是在启动更新它们的进程并跳过任何已锁定的行之前锁定行。
像这样的东西:
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.
循环查询结果(例如通过游标或编程语言)