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 | KEYuntuk membuat indeks normal.Gunakan
DROP INDEXuntuk menghapus indeks.Gunakan
ADD FULLTEXT INDEX | KEYuntuk membuat indeks teks penuh.Gunakan
ADD UNIQUE INDEX | KEYuntuk membuat indeks unik.Gunakan
ADD FOREIGN KEYuntuk membuat kunci asing.Gunakan
DROP PRIMARY KEYuntuk menghapus kendala PRIMARY KEY.PentingHanya OceanBase Database versi 4.0.0 dan yang lebih baru yang mendukung operasi ini.
Operasi yang tidak didukung
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 NULLuntuk kolomFOREIGN 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
Klausa dan opsi berikut akan diabaikan dan tidak akan diselesaikan atau dikonversi ketika ditentukan dalam pernyataan DDL yang disinkronkan.
USING BTREEatauUSING HASHKEY_BLOCK_SIZE,index_type,WITH PARSER,COMMENT,VISIBLE | INVISIBLE,ENGINE_ATTRIBUTE, atauSECONDARY_ENGINE_ATTRIBUTEdalamindex_option[NOT] ENFORCEDuntuk kendala CHECKMATCH FULL | MATCH PARTIAL | MATCH SIMPLEuntuk kunci asing
Batasan
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.