#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 ```