Я не уверен, существует ли вообще решение с автоматической цепной / многоуровневой обработкой транзакций, которое работает надежно (или не требует много ресурсов на стороне базы данных)
, если второешаг завершается неудачно, тогда первый шаг следует откатить
, так что вы можете объединить оба шага в один:
- чтение из первой таблицы A
- useпроцессор для обновления таблицы A
- используйте процессор для чтения из таблицы B
- используйте программу записи для обновления таблицы B
производительность сильно пострадает, потому что чтение натаблица B будет представлять собой одно чтение по сравнению с курсором для таблицы a
. Я бы выбрал компенсирующую стратегию, подобную этой
- (необязательно): используемые таблицы являются временными, а ненастоящие «производственные» таблицы, облегчающие работу с компенсацией с отделением хранилищ данных от производственных
- a неудавшийся шаг 1 запускает другой шаг или другое задание / скрипт
- этот шаг / задание / скрипт удаляется по мере необходимости (строки или полная таблица)