Без подробностей ответить очень сложно.Но общий подход заключается в блокировке строк перед запуском процесса, который их обновляет и пропускает все уже заблокированные строки.
Примерно так:
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.
Зацикливание результата этогозапрос (например, с помощью курсора или на вашем языке программирования)