You need to enable JavaScript to run this app. Liquibase中如何为已创建的表添加组合唯一索引(YML格式)
优惠活动
大模型
产品
解决方案
定价
更多

Liquibase中如何为已创建的表添加组合唯一索引(YML格式)

为已存在表添加组合唯一索引的Liquibase YML配置

实操前置检查

  • 执行索引创建前,必须先排查表A内是否存在(id, b_id)取值完全重复的存量数据,存在重复记录会直接导致索引创建失败;如果排查到重复值,需要先完成数据清理再执行变更,不要跳过检查直接运行。
  • 提前和团队确认索引命名规则,保证索引名在当前库内全局唯一。

完整YML配置示例

直接在Liquibase的变更日志文件中追加对应changeSet即可,不需要修改原有建表逻辑:

databaseChangeLog:
  # 原有其他变更配置保持不变,在下方追加当前变更项
  - changeSet:
      id: add_unique_index_on_A_table
      author: 你的开发署名
      changes:
        - createIndex:
            # 索引名按团队规范调整即可,示例为表A的id+b_id组合唯一索引命名
            indexName: uk_a_id_b_id
            tableName: A
            # 设为true即代表创建带唯一约束的索引
            unique: true
            columns:
              - column:
                  name: id
              - column:
                  name: b_id

配置说明

  • 该配置执行时,Liquibase会自动在目标数据库生成等价的原生创建索引语句:CREATE UNIQUE INDEX uk_a_id_b_id ON A (id, b_id)
  • 组合索引内的列顺序要和业务查询习惯匹配,常作为查询过滤条件、区分度更高的列建议放在靠前位置,避免索引失效
  • 索引名长度需要适配目标数据库的限制(如Oracle默认索引名长度上限为30字符,MySQL为64字符),避免创建报错

内容的提问来源于stack exchange,提问作者Nursultan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 00:27:07