You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 02:54:07