У меня есть ситуации, когда я должен:Откат DML после DDL терпит неудачу
- Отключить FK ограничения для некоторых таблиц,
- Изменение значений полей для первичных ключей, на которые ссылаются внешние ключи (которые также обновлены до матч),
- повторное включение FK ограничений с шага 1.
проблема состоит в том, что повторное включение ограничения в пункте 3 может потерпеть неудачу, если меняется от шага 2 сделано для полей первичного ключа не consi стент с полями, на которые ссылаются внешние ключи. Я хотел бы уловить этот случай и отменить изменения, сделанные на шаге 2. Насколько мне известно, запуск DDL-оператора, такого как включение ограничения, сначала выдаст фиксацию, после чего я не могу отменить изменения, сделанные на шаге 2.
Есть ли способ достичь этого в одном автономном скрипте? Процесс должен либо полностью пройти, либо откатить, как будто ничего не произошло. Или есть альтернатива транзакциям, которые могут вернуться к предыдущему состоянию, не делая резервное копирование/восстановление всей базы данных?
Это однопользовательский процесс? Если это так, вы можете использовать Flashback Table для возврата к предыдущей версии только соответствующих таблиц. –