Oracle SQL Как пропустить обновление, которое достигает определенного времени ожидания? - PullRequest
0 голосов
/ 20 февраля 2019

Допустим, я выполняю запрос с циклом, но на одной из его итераций он застревает, потому что какой-то другой процесс пытается обновить ту же строку (или по какой-то другой причине).Как я могу получить обновление, пропустить эту итерацию и перейти к следующей?

1 Ответ

0 голосов
/ 20 февраля 2019

Без подробностей ответить очень сложно.Но общий подход заключается в блокировке строк перед запуском процесса, который их обновляет и пропускает все уже заблокированные строки.

Примерно так:

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. 

Зацикливание результата этогозапрос (например, с помощью курсора или на вашем языке программирования)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...