如果 liquibase 格式的 sql 已经存在,我如何让 liquibase 跳过表创建?

Int*_*ted 5 testing h2 liquibase

这就是我所拥有的

--preconditions onFail:CONTINUE
--preconditions not tableExists tableName:QRTZ_CALENDARS schemaName:dbo
CREATE TABLE dbo.QRTZ_CALENDARS (
 SCHED_NAME VARCHAR (120)  NOT NULL ,
 CALENDAR_NAME VARCHAR (200)  NOT NULL ,
 CALENDAR IMAGE NOT NULL
) 
GO
Run Code Online (Sandbox Code Playgroud)

背景。我正在使用 liquibase 为 java 中的测试用例设置一个 h2 数据库。

小智 14

为您的变更集添加一个前提条件,例如:

<preConditions onFail="MARK_RAN">
    <not>
        <tableExists tableName="Table_name"/>
    </not>
</preConditions>
<createTable tableName="Table_name" >
    <column name="column1" type="NUMBER(20,0)"/>
</createTable>
Run Code Online (Sandbox Code Playgroud)


Meg*_*est 0

目前“格式化 SQL”变更日志仅支持“SQL 检查”前提条件。例子:

--preconditions onFail:HALT onError:HALT
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM my_table
Run Code Online (Sandbox Code Playgroud)

信息来源(和更新):https://docs.liquibase.com/concepts/changelogs/preconditions.html

如果需要更复杂的前提条件——可以尝试转向非 SQL Liquibase 格式,即 XML 或 JSON