---
title: "约束和索引操作 | OceanBase 文档中心"
description: "约束和索引操作 本文为您介绍迁移 MySQL 数据库的数据至 OceanBase 社区版时，ALTER TABLE DDL 有关约束/索引操作同步支持的范围。 总览 alter_option: { ADD {INDEX | KEY} [index_name] [index_type] (key_part,...) […"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*L03BS6f-o40AAAAAAAAAAAAADiGDAQ/original) 迁移服务 OMSV 4.2.1 社区版

# 约束和索引操作

更新时间：2026-04-14 15:40:37

[编辑](https://github.com/oceanbase/oms-doc/edit/V4.2.1/zh-CN/600.data-migration/1700.supported-ddl-operations-for-incremental-migration-and-limits/100.mysql-to-obmysql/400.alter-table/300.index-operations.md)  

本文为您介绍迁移 MySQL 数据库的数据至 OceanBase 社区版时，ALTER TABLE DDL 有关约束/索引操作同步支持的范围。

## 总览

```sql
alter_option: {
   ADD {INDEX | KEY} [index_name]
        [index_type] (key_part,...) [index_option] ...
  | ADD {FULLTEXT | SPATIAL} [INDEX | KEY] [index_name]
        (key_part,...) [index_option] ...
  | ADD [CONSTRAINT [symbol]] PRIMARY KEY
        [index_type] (key_part,...)
        [index_option] ...
  | ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY]
        [index_name] [index_type] (key_part,...)
        [index_option] ...
  | ADD [CONSTRAINT [symbol]] FOREIGN KEY
        [index_name] (col_name,...)
        reference_definition
  | ADD [CONSTRAINT [symbol]] CHECK (expr) [[NOT] ENFORCED]
  | DROP {CHECK | CONSTRAINT} symbol
  | ALTER {CHECK | CONSTRAINT} symbol [NOT] ENFORCED
  | ALTER INDEX index_name {VISIBLE | INVISIBLE}
  | {DISABLE | ENABLE} KEYS
  | DROP {INDEX | KEY} index_name
  | DROP PRIMARY KEY
  | DROP FOREIGN KEY fk_symbol
  | RENAME {INDEX | KEY} old_index_name TO new_index_name
}

key_part: {col_name [(length)] | (expr)} [ASC | DESC]

index_type:
    USING {BTREE | HASH}

index_option: {
    KEY_BLOCK_SIZE [=] value
  | index_type
  | WITH PARSER parser_name
  | COMMENT 'string'
  | {VISIBLE | INVISIBLE}
}

```

## 支持的范围

- 支持创建普通索引：`ADD INDEX / KEY`
 - 支持删除索引：`DROP INDEX`
 - 支持创建唯一索引：`ADD UNIQUE INDEX / KEY`
 - 支持创建外键 ADD：`FOREIGN KEY`
 - 支持删除主键约束： `DROP PRIMARY KEY`

  #### 注意

  仅 OceanBase 社区版 V4.0.0 及之后版本支持。

## 不支持的范围

#### 警告

如果同步的 DDL 包含以下不支持的定义，则整个建表语句会转换失败（输出空）。

- UNIQUE KEY、INDEX / KEY、FULLTEXT INDEX 不支持函数索引，仅支持索引创建在字段上。
 - 不支持 `ADD SPATIAL INDEX`。
 - 不支持 `ADD PRIMARY KEY`。
 - 不支持 `ALTER TABLE DISABLE | ENABLE KEYS`。
 - 不支持 `FOREIGN KEY` 指定 `ON [DELETE | UPDATE] SET NULL` 属性。
 - OceanBase 社区版 V3.2.3 之前版本，不支持下述操作：

     - 不支持 `ADD CHECK`。
     - 不支持 `DROP CHECK`。
     - 不支持 `ALTER CHECK [NOT] ENFORCED`。
     - 不支持 `ALTER INDEX VISIBLE | INVISIBLE`。
     - 不支持 `RENAME INDEX / KEY`。

      ```sql
      ALTER TABLE t rename KEY k TO kk;
      ALTER TABLE T RENAME INDEX b TO w;

      ```

## 忽略的属性

#### 警告

如果同步的 DDL 包含以下不支持的定义，则这些属性将不会被解析和转换，最终会被忽略。

- 指定 `USING BTREE` 或 `USING HASH`。
 - `index option` 中指定 `KEY_BLOCK_SIZE`、`index_type`、`WITH PARSER`、`COMMENT`、`VISIBLE | INVISIBLE`、`ENGINE_ATTRIBUTE` 和 `SECONDARY_ENGINE_ATTRIBUTE` 属性。
 - CHECK 约束中指定 `[NOT] ENFORCED` 属性。
 - `FOREIGN KEY` 指定 `MATCH FULL | MATCH PARTIAL | MATCH SIMPLE` 属性。

## 使用限制

#### 注意

由于 OceanBase 社区版本身的限制，如果存在以下场景，同步的 DDL 被成功转换后，执行到 OceanBase 社区版可能会报错。

- OceanBase 社区版不支持 PRIMARY KEY、UNIQUE KEY、INDEX / KEY、FULLTEXT INDEX、FOREIGN KEY 创建在某些类型的字段上。
 - OceanBase 社区版不支持 CHECK 约束中的某些函数/表达式。
 - OceanBase 社区版不支持 FOREIGN KEY 约束中的某些函数/表达式。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
