@GAS812
Программист

Как сделать многонакатываемый патч?

Добрый день.

Подскажите, что можно придумать чтобы патчи бд были многонакатываемые?
Пример:
У меня есть три скрипта в патче. Первый делает новую таблицу. Второй заполняет эту таблицу данными. Третий делает еще какие-либо изменения в бд.

При установке патча у меня возникает ошибка в третьем патче. Я исправляю ошибку и заново накатываю патч. Патч по идее встал нормально, но в логе куча ошибок что таблица существует и что данные с таким primary key уже существуют.

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

Возможно есть еще какие-то подходы?Что-нибудь например типо отката всего патча, если хотя бы один скрипт упал и т.д..
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
Lorien_Elf
@Lorien_Elf
Keep clear
К сожалению, никак.
https://docs.oracle.com/en/database/oracle/oracle-...

Oracle Database implicitly commits the current transaction before and after every DDL statement.


Да, это боль и костыли :( Если хочется убрать ошибки, то надо писать функции-обработчики и предусматривать различные сценарии.

Как крайнее средство есть разве что FLASHBACK DATABASE, но это опять же боль - откатывать всю БД из-за изменения одной-двух таблиц.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы