如果使用 Liquibase 不存在则创建列

Create column if it doesn't exist using Liquibase

在 Liquibase SQL 语法中,是否可以检查列是否不存在? 我看到有一个 columnExists 前提条件,但找不到相反的条件。

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

您可以执行以下操作:

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

以上前提条件将检查table TABLE中是否存在列COL,如果返回的计数为0(这意味着该列不存在)则INSERT将执行 COLUMN 个查询。

目前,“格式化 SQL”更新日志仅支持“SQL 检查”前提条件。看看 liquibase docs.

Preconditions can be specified for each changeset. Currently, only the SQL check precondition is supported.

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