2015-01-27 3 views
2

Насколько я понимаю, Liquibase выполняет изменения в соответствии с порядком их написания в журнале изменений. Я хочу, чтобы набор изменений запускался в другом порядке. Есть ли способ изменить порядок выполнения наборов изменений?Liquibase - порядок выполнения изменений

Быстрый ответ на мой вопрос будет высоко оценен.

+4

Почему вы не просто переупорядочиваете их в XML-файле? –

+0

мы не переупорядочиваем их в xml, потому что мы обновляем наш журнал изменений в отдельных XML-файлах для каждой таблицы, которые включают в себя таблицы изменения таблицы create, create index, create foreighn key и т. Д. , и поскольку у нас есть некоторые таблицы круговой зависимости, мы хотите, чтобы набор изменений запускался в другом порядке, чем они написаны. Возможно ли это? – Nava

+0

Затем измените порядок их включения: сначала создайте все XML-таблицы 'create table' (при условии, что они включают определение PK), затем все XML-шаблоны' create index' и, наконец, все внешние XML-ключи (поскольку в это время будут созданы все таблицы). Это единственный способ разбить скрипты, которые касаются ссылок на круговые внешние ключи –

ответ

0

Порядок изменения вашего журнала изменений в Liquibase - это порядок, в котором изменения должны быть развернуты (выполнены), если необходимо.

Liquibase полагается на вас, чтобы установить правильный порядок.

Чтобы использовать динамический порядок, соответствующий текущей ситуации, вы должны использовать инструменты синхронизации сравнения &, которые будут генерировать соответствующий DDL на основе исходного репозитория управления и целевой среды.

Dbmaestro (для которой я работаю) предоставляет такую ​​возможность

0

У нас был smiliar подход. У нас был один XML-файл в таблице, чтобы иметь хороший обзор по каждой таблице и ее столбцам. Было обнаружено, что, когда нам нужно было реорганизовать (например, добавить новые столбцы, перенести некоторые данные, добавить новые FK), наш дБ, некоторые проблемы. Возможность увидеть то, что принадлежит одной таблице, и порядок выполнения находятся в конфликте друг с другом. Мое лучшее (но все еще грязное) решение состояло в том, чтобы запустить один новый xml-файл с именем migration_X.xml со всеми changeSets для добавления столбцов, копирования некоторых данных, добавления новых ограничений или FK. Если я хочу увидеть определение одной таблицы, я создаю DDL.

Смежные вопросы