有没有办法在 liquibase 中组合变更集?
Is there a way to combine changeset in liquibase?
假设需要将 2 列添加到 table 并修改 1。从纯粹的设计角度来看,我需要创建 3 个具有 3 个不同先决条件的变更集:2 列存在,1 列有错误类型。
这是一种清晰的设计方法,但它会导致 3 个单独的更改 table,这可能非常昂贵。例如 MySql 在添加或修改列时复制或重建整个 table。但它允许将多个修改后的语句合并为一个。但是一个改变的变更集需要结合前提条件,这是不可能的 - 当其中一个为真或全部时,我应该执行大改变吗?
那么有没有办法查看几个先决条件并仅从成功的先决条件构造 alter table?
对于 MySQL,如果您有一个包含多个嵌套列的 addColumn 标记,它将生成一次添加所有列的单个 ALTER TABLE 语句。
您可以在 "and" 和 "or" 块中嵌套多个先决条件,因此您可以有一个 changeSet 检查是否缺少 column1 和 column2,如果两者都缺少,则 运行 列出了两列的 addColumns。然后下一个 changeSet 可以检查缺少的 column1,下一个检查缺少的 column2,下一个检查错误的数据类型。
您需要将先决条件 onFail 属性设置为 "MARK_RAN",以便它们仅在 运行 处标记,并且不会在每次更新时不断重新评估。
假设需要将 2 列添加到 table 并修改 1。从纯粹的设计角度来看,我需要创建 3 个具有 3 个不同先决条件的变更集:2 列存在,1 列有错误类型。
这是一种清晰的设计方法,但它会导致 3 个单独的更改 table,这可能非常昂贵。例如 MySql 在添加或修改列时复制或重建整个 table。但它允许将多个修改后的语句合并为一个。但是一个改变的变更集需要结合前提条件,这是不可能的 - 当其中一个为真或全部时,我应该执行大改变吗?
那么有没有办法查看几个先决条件并仅从成功的先决条件构造 alter table?
对于 MySQL,如果您有一个包含多个嵌套列的 addColumn 标记,它将生成一次添加所有列的单个 ALTER TABLE 语句。
您可以在 "and" 和 "or" 块中嵌套多个先决条件,因此您可以有一个 changeSet 检查是否缺少 column1 和 column2,如果两者都缺少,则 运行 列出了两列的 addColumns。然后下一个 changeSet 可以检查缺少的 column1,下一个检查缺少的 column2,下一个检查错误的数据类型。
您需要将先决条件 onFail 属性设置为 "MARK_RAN",以便它们仅在 运行 处标记,并且不会在每次更新时不断重新评估。