Подскажите, что можно придумать чтобы патчи бд были многонакатываемые?
Пример:
У меня есть три скрипта в патче. Первый делает новую таблицу. Второй заполняет эту таблицу данными. Третий делает еще какие-либо изменения в бд.
При установке патча у меня возникает ошибка в третьем патче. Я исправляю ошибку и заново накатываю патч. Патч по идее встал нормально, но в логе куча ошибок что таблица существует и что данные с таким primary key уже существуют.
Как сделать чтобы убрать такие ошибки. Например вставку данных можно переделать на апсерты, а как быть с скриптами меняющими структуру бд(создание таблиц, добавление-удаление столбцов, создание индексов и т.д.).
Возможно есть еще какие-то подходы?Что-нибудь например типо отката всего патча, если хотя бы один скрипт упал и т.д..
а оракл не умеет транзакционный DDL? Честно не в курсе. В postgresql просто оборачиваете в транзакцию и всё, ваша задача выполнена (за оговоркой что это не concurrently изменения).