使用Liquibase移除数据库表多列非空约束:需创建多个changeSet还是可合并至单个changeSet?
移除多列非空约束:单个vs多个changeSet
好问题!其实两种方式都能实现你的需求,我们可以根据团队习惯和后续维护需求来选择:
方式一:在同一个changeSet中合并操作
这是最简洁的做法,尤其适合处理同一张表的同类型批量变更。你只需要在同一个changeSet里用changes节点包裹多个dropNotNullConstraint操作即可:
databaseChangeLog: - changeSet: id: 1024 author: thomas changes: - dropNotNullConstraint: tableName: sup_user columnName: supplier_id columnDataType: VARCHAR(255) - dropNotNullConstraint: tableName: sup_user columnName: supplier_name columnDataType: VARCHAR(255)
Liquibase会按顺序执行这些操作,这样能让你的变更记录更集中,减少不必要的changeSet数量。
方式二:创建多个独立的changeSet
如果你的团队偏好把每个小变更单独归档,或者后续可能需要单独回滚某一列的非空约束,也可以拆分出多个changeSet,每个负责一个列的修改:
databaseChangeLog: - changeSet: id: 1024 author: thomas dropNotNullConstraint: tableName: sup_user columnName: supplier_id columnDataType: VARCHAR(255) - changeSet: id: 1025 author: thomas dropNotNullConstraint: tableName: sup_user columnName: supplier_name columnDataType: VARCHAR(255)
注意每个changeSet的id必须唯一,这样每个变更都有独立的执行记录,方便后续单独回滚某个操作。
小建议
如果这两个约束的移除是同一次需求的一部分,优先选择方式一,它更整洁且便于整体追踪;如果后续可能有单独调整某列约束的场景,方式二会更灵活。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

