Tous les produits
Search
Centre de documentation

ApsaraDB for OceanBase (Deprecated):Opérations sur les contraintes et les index

Dernière mise à jour :Aug 09, 2026

Cette rubrique décrit la portée de conversion prise en charge pour les opérations DDL ALTER TABLE portant sur les contraintes et les index lors de la migration des données d'une base de données MySQL vers un locataire MySQL d'OceanBase Database.

Syntaxe

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}
}

Opérations prises en charge

  • Utilisez ADD INDEX | KEY pour créer un index normal.

  • Servez-vous de DROP INDEX pour supprimer un index.

  • Ayez recours à ADD FULLTEXT INDEX | KEY afin de créer un index full-text.

  • Employez ADD UNIQUE INDEX | KEY pour générer un index unique.

  • Appliquez ADD FOREIGN KEY pour établir une clé étrangère.

  • Exécutez DROP PRIMARY KEY pour retirer une contrainte PRIMARY KEY.

    Important

    Seules les versions d'OceanBase Database V4.0.0 et ultérieures prennent en charge cette opération.

Opérations non prises en charge

Important

Si une instruction DDL à synchroniser contient les définitions non prises en charge suivantes, la conversion échouera et la sortie sera une chaîne vide.

  • Créez des index basés sur des fonctions sur les colonnes UNIQUE KEY, INDEX/KEY et FULLTEXT INDEX. Vous ne pouvez créer ces index que sur des champs.

  • Utilisez ADD SPATIAL INDEX.

  • Faites appel à ADD PRIMARY KEY.

  • Recourez à ALTER TABLE DISABLE | ENABLE KEYS.

  • Spécifiez les mots-clés ON [DELETE | UPDATE] SET NULL pour les colonnes FOREIGN KEY.

  • Dans les locataires MySQL d'OceanBase Database dont la version est antérieure à la V3.2.3, vous ne pouvez pas effectuer les opérations suivantes :

    • Utilisez ADD CHECK.

    • Employez DROP CHECK.

    • Appliquez ALTER CHECK [NOT] ENFORCED.

    • Servez-vous de ALTER INDEX VISIBLE | INVISIBLE.

    • Exécutez RENAME INDEX | KEY.

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

Clauses et options ignorées

Important

Les clauses et options suivantes seront ignorées et ne seront ni résolues ni converties lorsqu'elles sont spécifiées dans les instructions DDL synchronisées.

  • USING BTREE ou USING HASH

  • KEY_BLOCK_SIZE, index_type, WITH PARSER, COMMENT, VISIBLE | INVISIBLE, ENGINE_ATTRIBUTE ou SECONDARY_ENGINE_ATTRIBUTE dans index_option

  • [NOT] ENFORCED pour les contraintes CHECK

  • MATCH FULL | MATCH PARTIAL | MATCH SIMPLE pour les clés étrangères

Limites

Important

En raison des limites des locataires MySQL d'OceanBase Database, une erreur peut être renvoyée lorsque les instructions DDL synchronisées sont converties et exécutées dans un locataire MySQL d'OceanBase Database dans les scénarios suivants.

  • Les locataires MySQL d'OceanBase Database ne peuvent pas créer les types de contraintes suivants sur certains types de champs : PRIMARY KEY, UNIQUE KEY, INDEX/KEY, FULLTEXT INDEX et FOREIGN KEY.

  • Les locataires MySQL d'OceanBase Database ne permettent pas de spécifier certaines fonctions ou expressions dans les contraintes CHECK.

  • Les locataires MySQL d'OceanBase Database ne permettent pas de spécifier certaines fonctions ou expressions dans les contraintes FOREIGN KEY.