Создание представления в 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>
Из-за runOnChange
Liquibase будет включать контрольную сумму фактического файла SQL и будет запускать его только в том случае, если определение представления изменилось.
Другой вариант заключается в использовании runAlways="true"
вместо этого, а затем представление будет воссоздано каждый раз, когда вы запускаете Liquibase. Это необходимо для автоматического получения изменений в базовой таблице (таблицах).