有没有办法在liquibase中组合变更集?

时间:2016-05-10 04:24:36

标签: mysql sql liquibase changeset

假设需要在表中添加2列并修改1.从纯设计视图中我需要创建3个具有3个不同前提条件的变更集:存在2列,1列具有错误类型。

这是一种清晰的设计方法,但它会导致3个单独的alter table,这可能非常昂贵。例如,在添加或修改列时,MySql复制或重建整个表。但它允许将几个修改后的语句合并为一个。但是一个改变变更集需要结合不可能的先决条件 - 当其中一个是真的还是全部时,我应该进行大改变吗?

那么有没有办法查看几个前置条件并仅从成功的前置条件构造alter table?

1 个答案:

答案 0 :(得分:0)

对于MySQL,如果你有一个带有多个嵌套列的addColumn标记,它将生成一个ALTER TABLE语句,该语句一次添加所有列。

您可以在“和”和“或”块中嵌套多个前置条件,因此您可以使用一个changeSet来检查column1是否缺失并且column2是否缺失,如果两者都是,则运行addColumns并列出两列。然后下一个changeSet可以检查是否缺少column1,下一个是缺少column2,下一个是错误的数据类型。

您需要将onconditions onFail属性设置为“MARK_RAN”,以便它们仅在运行时标记,并且不会在每次更新时不断重新评估。