【问题标题】:Create column if it doesn't exist using Liquibase如果列不存在,则使用 Liquibase 创建列
【发布时间】:2021-07-17 15:04:06
【问题描述】:
在 Liquibase SQL 语法中,是否可以检查列是否不存在?
我已经看到有一个columnExists 前提条件,但找不到它的反面。
--changeset me:1 runAlways:false runOnChange:false failOnError:true
--precondition-column-exists tableName:my_table columnName:my_col
INSERT COLUMN
【问题讨论】:
标签:
sql
oracle
comments
liquibase
oracle19c
【解决方案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
上述前提条件会检查表TABLE中是否存在列COL,如果返回的计数为0(表示该列不存在)则执行INSERT COLUMN查询。
目前,“格式化 SQL”变更日志中仅支持“SQL 检查”前提条件。看看liquibase docs。
可以为每个变更集指定前提条件。目前,只有
支持 SQL 检查前置条件。
--preconditions onFail:HALT onError:HALT
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM my_table ```