---
title: "创建索引或约束 | OceanBase 文档中心"
description: "创建索引或约束 本文为您介绍迁移 MySQL 数据库的数据至 OceanBase 社区版时，CREATE TABLE DDL 创建索引或约束支持的转换范围。 索引或约束定义 create_definition: { col_name column_definition | {INDEX | KEY} [index_n…"
---
切换语言

- 中文站 - 简体中文
- 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/200.create-table/300.create-table-index.md)  

本文为您介绍迁移 MySQL 数据库的数据至 OceanBase 社区版时，CREATE TABLE DDL 创建索引或约束支持的转换范围。

## 索引或约束定义

```sql
create_definition: {
    col_name column_definition
  | {INDEX | KEY} [index_name] [index_type] (key_part,...)
      [index_option] ...
  | {FULLTEXT | SPATIAL} [INDEX | KEY] [index_name] (key_part,...)
      [index_option] ...
  | [CONSTRAINT [symbol]] PRIMARY KEY
      [index_type] (key_part,...)
      [index_option] ...
  | [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY]
      [index_name] [index_type] (key_part,...)
      [index_option] ...
  | [CONSTRAINT [symbol]] FOREIGN KEY
      [index_name] (col_name,...)
      reference_definition
  | check_constraint_definition
}

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}
  |ENGINE_ATTRIBUTE [=] 'string'
  |SECONDARY_ENGINE_ATTRIBUTE [=] 'string'
}

check_constraint_definition:
    [CONSTRAINT [symbol]] CHECK (expr) [[NOT] ENFORCED]

reference_definition:
    REFERENCES tbl_name (key_part,...)
      [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
      [ON DELETE reference_option]
      [ON UPDATE reference_option]

reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

```

## 支持的范围

- 支持创建 PRIMARY KEY。
 - 支持创建 UNIQUE KEY。
 - 支持创建 INDEX / KEY。
 - 支持创建 FOREIGN KEY。

  支持 FOREIGN KEY 创建在字段/函数/表达式上，支持指定 ON [DELETE | UPDATE] RESTRICT | CASCADE | NO ACTION | SET DEFAULT 属性。
 - 支持创建 FULLTEXT INDEX。
 - OceanBase 社区版 3.2.3 及之后版本支持创建 CHECK 约束。
 - 支持前缀索引。
 - 支持指定 ASC / DESC。

## 不支持的范围

#### 警告

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

- PRIMARY KEY、UNIQUE KEY、INDEX / KEY、FULLTEXT INDEX 不支持函数索引，仅支持索引创建在字段上。

  不支持 PRIMARY KEY、UNIQUE KEY、INDEX / KEY、FULLTEXT INDEX 定义中包含函数或表达式，示例如下：

  ```sql
  CREATE TABLE functional_index_t1 (col1 INT, PRIMARY KEY (col1, (ABS(col1))));
  CREATE TABLE functional_index_t1(x VARCHAR(30), INDEX idx ((CAST(x->>'$.name' AS CHAR(30)))));

  ```
 - 不支持创建 SPATIAL INDEX。
 - 不支持 FOREIGN KEY 指定 ON [DELETE | UPDATE] SET NULL 属性。

## 忽略的属性

#### 说明

如果同步的 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) 咨询热线
