检查 Liquibase 前提条件中是否不为空或不为 0

Sop*_*591 3 java changeset liquibase preconditions

我目前有 liquibase 先决条件的问题。仅当前提条件请求不回答 0 或 null 时,我才想插入一些内容……我解释说:

<changeSet id="myId" author="myName">
<preConditions onFail="MARK_RAN">
    <sqlCheck expectedResult=????>SELECT COUNT(1) FROM tableB WHERE column2 IS NOT NULL;
    </sqlCheck>
</preConditions>
<insert tableName="tableA">
    <column name="column1" valueComputed="(SELECT columnA FROM tableB WHERE columnB IS NOT NULL;)" />
    <column name="column2" valueComputed="(SELECT columnB FROM tableB WHERE columnB IS NOT NULL;)" />
</insert>
Run Code Online (Sandbox Code Playgroud)

我希望只有在第一个请求给我结果时才播放我的 changeSet。有没有办法在没有自定义前提条件的情况下做到这一点?

提前致谢

Rol*_*der 6

Liquibase 提供有条件的先决条件和/或/非,可以与所有其他先决条件一起使用。在你的情况下,<sqlCheck><not>.

<preConditions onFail="MARK_RAN">
    <not>
        <sqlCheck expectedResult="0">SELECT COUNT(1) FROM tableB WHERE column2 IS NOT NULL;</sqlCheck>
    </not>
</preConditions>
Run Code Online (Sandbox Code Playgroud)

另请参阅前提条件文档