Создание представления в DB2 LUW с помощью Liquibase

Я использую Liquibase 3.5.3 для создания представления в DB2 LUW 11.0. Я установил для свойства "replaceIfExists" значение true, и во время выполнения это выдает ошибку "replaceIfExists not not on db2".

Я знаю, что официально это свойство не поддерживается для DB2 в Liquibase, но API базы данных позволяет это (я вручную выполняю сценарий sql с созданием или заменой и работает нормально).

Есть какой-то обходной путь для запуска этих сценариев в DB2 или, может быть, вы можете реализовать эту функцию?

Пример:

CREATE OR REPLACE myView AS (
    SELECT * FROM myTable
)

1 ответ

Я поместил бы этот сценарий в файл, а затем включил его в runOnChange="true" для набора изменений

<changeSet author="arthur.dent" id="42" runOnChange="true">
    <sqlFile path="create_view.sql"
             encoding="UTF-8"
             relativeToChangelogFile="true"
             stripComments="false"
             splitStatements="false"/>
</changeSet>

Из-за runOnChangeLiquibase будет включать контрольную сумму фактического файла SQL и будет запускать его только в том случае, если определение представления изменилось.

Другой вариант заключается в использовании runAlways="true" вместо этого, а затем представление будет воссоздано каждый раз, когда вы запускаете Liquibase. Это необходимо для автоматического получения изменений в базовой таблице (таблицах).

Другие вопросы по тегам