Проверьте, не нуль или не 0 в предварительном условии Liquibase

В настоящее время у меня проблема с предварительными условиями 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>

I would like for my changeSet to only be played if the first request give me a result. Is there a way to do that without a custom precondition ?

заранее спасибо


person Sophie3591    schedule 10.01.2019    source источник


Ответы (1)


Liquibase предоставляет условные предварительные условия и/или/нет, которые можно использовать со всеми другими предварительными условиями. В вашем случае оберните <sqlCheck> <not>.

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

См. также документацию по предварительным условиям.

person Roland Weisleder    schedule 10.01.2019