All Products
Search
Document Center

ApsaraDB for OceanBase (Deprecated):Operasi pada kendala dan indeks

Last Updated:Jun 28, 2025

Topik ini menjelaskan ruang lingkup konversi yang didukung untuk operasi DDL ALTER TABLE pada kendala dan indeks selama migrasi data dari database MySQL ke tenant MySQL OceanBase Database.

Sintaksis

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

Operasi yang didukung

  • Gunakan ADD INDEX | KEY untuk membuat indeks normal.

  • Gunakan DROP INDEX untuk menghapus indeks.

  • Gunakan ADD FULLTEXT INDEX | KEY untuk membuat indeks teks penuh.

  • Gunakan ADD UNIQUE INDEX | KEY untuk membuat indeks unik.

  • Gunakan ADD FOREIGN KEY untuk membuat kunci asing.

  • Gunakan DROP PRIMARY KEY untuk menghapus kendala PRIMARY KEY.

    Penting

    Hanya OceanBase Database versi 4.0.0 dan yang lebih baru yang mendukung operasi ini.

Operasi yang tidak didukung

Penting

Jika pernyataan DDL yang akan disinkronkan berisi definisi berikut yang tidak didukung, konversi akan gagal dan keluarannya adalah string kosong.

  • Buat indeks berbasis fungsi pada kolom UNIQUE KEY, INDEX/KEY, dan FULLTEXT INDEX. Anda hanya dapat membuat indeks ini pada bidang.

  • Gunakan ADD SPATIAL INDEX.

  • Gunakan ADD PRIMARY KEY.

  • Gunakan ALTER TABLE DISABLE | ENABLE KEYS.

  • Tentukan kata kunci ON [DELETE | UPDATE] SET NULL untuk kolom FOREIGN KEY.

  • Pada tenant MySQL OceanBase Database dengan versi sebelum V3.2.3, Anda tidak dapat melakukan operasi berikut:

    • Gunakan ADD CHECK.

    • Gunakan DROP CHECK.

    • Gunakan ALTER CHECK [NOT] ENFORCED.

    • Gunakan ALTER INDEX VISIBLE | INVISIBLE.

    • Gunakan RENAME INDEX | KEY.

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

Klausa dan opsi yang diabaikan

Penting

Klausa dan opsi berikut akan diabaikan dan tidak akan diselesaikan atau dikonversi ketika ditentukan dalam pernyataan DDL yang disinkronkan.

  • USING BTREE atau USING HASH

  • KEY_BLOCK_SIZE, index_type, WITH PARSER, COMMENT, VISIBLE | INVISIBLE, ENGINE_ATTRIBUTE, atau SECONDARY_ENGINE_ATTRIBUTE dalam index_option

  • [NOT] ENFORCED untuk kendala CHECK

  • MATCH FULL | MATCH PARTIAL | MATCH SIMPLE untuk kunci asing

Batasan

Penting

Karena batasan tenant MySQL OceanBase Database, kesalahan mungkin terjadi ketika pernyataan DDL yang disinkronkan dikonversi dan dieksekusi dalam tenant MySQL OceanBase Database dalam skenario berikut.

  • Tenant MySQL OceanBase Database tidak dapat membuat jenis kendala berikut pada jenis bidang tertentu: PRIMARY KEY, UNIQUE KEY, INDEX/KEY, FULLTEXT INDEX, dan FOREIGN KEY.

  • Tenant MySQL OceanBase Database tidak mendukung menentukan fungsi atau ekspresi tertentu dalam kendala CHECK.

  • Tenant MySQL OceanBase Database tidak mendukung menentukan fungsi atau ekspresi tertentu dalam kendala FOREIGN KEY.