首页 > 解决方案 > 多个变更集的 Liquibase 单一前提条件

问题描述

如果存在特定条件,我想运行许多变更集。例如,仅当 sqlCheck 以异常结果执行时才运行变更集 1、2 和 3。

我可以将前提条件复制到每个变更集中。然而,感觉应该有一种更有效的方法来做到这一点。随着变更集数量的增加,这些文件有很多重复项。

直接在 databaseChangeLog 下的 preConditions 元素似乎只配置 dbms 和 runAs。

有没有办法定义将由多个变更集使用的单个前置条件?

任何帮助表示赞赏。

标签: liquibase

解决方案


不幸的是,这是不可能的,但有时您可以在声明property标签时避免使用前置条件。例如,当您为 Oracle 和 SQL Server 等具有不同数据类型的不同数据库(如 Oracle 和 SQL Server number)设置先决条件时,您可以使用标签float代替对每个数据库使用先决条件:property

<property dbms="oracle" name="DECIMALTYPE" value="NUMBER" />
<property dbms="mssql" name="DECIMALTYPE" value="FLOAT" />

推荐阅读