生成变更日志时更小的变更集

Smaller Changesets when Generating Changelogs

是否可以生成变更日志,将变更集合并在一起?

像这样:

<changeSet author="Author" id="1">
    <dropNotNullConstraint columnDataType="varchar(255)" columnName="name" tableName="table"/>
    <dropNotNullConstraint columnDataType="varchar(255)" columnName="phone" tableName="table"/>
    <dropNotNullConstraint columnDataType="bigint" columnName="email" tableName="table"/>
</changeSet>


而不是这个:

<changeSet author="Author" id="1">
    <dropNotNullConstraint columnDataType="varchar(255)" columnName="name" tableName="table"/>
</changeSet>
<changeSet author="Author" id="2">
    <dropNotNullConstraint columnDataType="varchar(255)" columnName="phone" tableName="table"/>
</changeSet>
<changeSet author="Author" id="3">
    <dropNotNullConstraint columnDataType="bigint" columnName="email" tableName="table"/>
</changeSet>



如果是这样,您可以选择自定义范围吗? (例如 给定 table 中的所有更改都组合在一起,)。如果不是,是否有 'best practice' 避免手动分组的理由?

如果你的意思是命令 generateChangeLog 那么不,没有将所有更改放在一个 changeLog 中的选项。但是,您可以根据需要以编程方式创建它。

Liquibase 应根据 changeSet 进行更改,因为每个 changeSet 都在一个事务中执行 read here。因此,如果您在一个 changeSet 中包含大量更改并且执行该 changeSet 失败,您将更难找到失败的更改。最好按 changeSet 处理更改。

注意: 有时我也会对每个 changeSet 使用多个更改(例如 table 的备注(注释)或 DML(数据)修改) 但我更喜欢每个 changeSet 有一个 DDL。