Создайте столбец, если он не существует, с помощью Liquibase

#sql #oracle #comments #liquibase #oracle19c

Вопрос:

В синтаксисе SQL Liquibase можно ли проверить, если столбец еще не существует? Я видел, что есть columnExists предварительное условие, но не мог найти противоположного ему.

 --changeset me:1 runAlways:false runOnChange:false failOnError:true
--precondition-column-exists tableName:my_table columnName:my_col
INSERT COLUMN
 

Ответ №1:

Вы можете сделать что-то, как показано ниже:

 --changeset me:1 runAlways:false runOnChange:false failOnError:true
--precondition-sql-check expectedResult:0 SELECT COUNT(*) from information_schema.columns where column_name='COL' and table_name='TABLE'
INSERT COLUMN QUERY HERE
 

Приведенное выше предварительное условие проверит , существует ли столбец COL в таблице TABLE , если возвращаемое число равно 0 ( что означает, что столбец не существует), то будет выполнен запрос на ВСТАВКУ СТОЛБЦА.

На данный момент в списках изменений «форматированный SQL» поддерживается только предварительное условие «Проверка SQL». Взгляните на документы liquibase.

Предварительные условия могут быть указаны для каждого набора изменений. В настоящее время поддерживается только предварительное условие проверки SQL.

 --preconditions onFail:HALT onError:HALT
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM my_table ```