すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for OceanBase (Deprecated):制約とインデックスに対する操作

最終更新日:Jan 19, 2025

このトピックでは、MySQL データベースから OceanBase Database の MySQL テナントへのデータ移行中に、制約とインデックスに対する ALTER TABLE DDL 操作のサポートされている変換範囲について説明します。

構文

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 FULLTEXT INDEX | KEY を使用してフルテキストインデックスを作成します。

  • ADD UNIQUE INDEX | KEY を使用して一意なインデックスを作成します。

  • ADD FOREIGN KEY を使用して外部キーを作成します。

  • DROP PRIMARY KEY を使用して主キー制約を削除します。

    重要

    OceanBase Database 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 キーワードを指定します。

  • V3.2.3 より前のバージョンの OceanBase Database の MySQL テナントでは、以下の操作を実行できません。

    • ADD CHECK を使用します。

    • DROP CHECK を使用します。

    • ALTER CHECK [NOT] ENFORCED を使用します。

    • ALTER INDEX VISIBLE | INVISIBLE を使用します。

    • RENAME INDEX | KEY を使用します。

      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_SIZEindex_typeWITH PARSERCOMMENTVISIBLE | INVISIBLEENGINE_ATTRIBUTE、または SECONDARY_ENGINE_ATTRIBUTE

  • CHECK 制約の [NOT] ENFORCED

  • MATCH FULL | MATCH PARTIAL | MATCH SIMPLE 外部キー用

制限事項

重要

MySQL テナントの OceanBase Database の制限により、同期された DDL 文が変換され、以下のシナリオで MySQL テナントの OceanBase Database で実行されると、エラーが返される場合があります。

  • MySQL テナントの OceanBase Database は、特定タイプのフィールドに以下のタイプの制約を作成できません:PRIMARY KEY、UNIQUE KEY、INDEX/KEY、FULLTEXT INDEX、および FOREIGN KEY。

  • MySQL テナントの OceanBase Database は、CHECK 制約で特定の関数または式を指定することをサポートしていません。

  • MySQL テナントの OceanBase Database は、FOREIGN KEY 制約で特定の関数または式を指定することをサポートしていません。