多个前提条件



我正在Liquibase中实现一个变更集,在尝试运行之前需要几个不同的前提条件才能有效。

场景 #1:如果表 A、B、C 存在,则标记为已运行

场景 #2:如果表 X,Y,Z 不存在,则停止执行变更集

换句话说,我需要两个具有不同onFail子句的<preConditions>标签。这在Liquibase中是允许的吗?我似乎无法让它工作。文档的信息量不是很大。

目前不允许这样做。只能有一个块。

将其分解为两个单独的更改集是否有效?

将它们

<or><and>组合在一起,如下所示:

<preConditions>
    <or>
        <runningAs username="liquibase" />
        <runningAs username="sa" />
    </or>
</preConditions>

以下是有关前提条件的一些文档。

我只是使用了的解决方法:

  • 创建正常的前提条件

    <!-- pre-condition tests -->
    <preConditions onFail="WARN">
            <runningAs username="${db.maintenance.user}" />
    </preConditions>
    
  • 为另一个 onFail 级别创建一个空changeSet

    <changeSet id="liquibase-pre-1" author="liquibase" runAlways="true" runOnChange="true" runInTransaction="false">
        <preConditions onFail="HALT" onFailMessage="...">
            <!-- ... -->
        </preConditions>
        <sql>
            select 1 <!-- (Postgresql) or "select 1 from dual" (Oracle) -->
        </sql>
    </changeSet>
    

相关内容

  • 没有找到相关文章

最新更新