Este tema describe el alcance de conversión compatible de las operaciones DDL CREATE TABLE para crear índices o restricciones durante la migración de datos desde una base de datos MySQL hacia un tenant de MySQL de OceanBase Database.
Sintaxis
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
Operaciones compatibles
Cree claves primarias.
Cree claves únicas.
Cree índices o claves.
-
Cree claves foráneas.
Cree claves foráneas sobre campos, funciones o expresiones. Especifique las opciones ON [DELETE | UPDATE] RESTRICT | CASCADE | NO ACTION | SET DEFAULT.
Cree índices de texto completo.
Cree restricciones CHECK en tenants de MySQL de OceanBase Database V3.2.3 y versiones posteriores.
Cree índices con prefijo.
Especifique la palabra clave ASC o DESC.
Operaciones no compatibles
Si una instrucción DDL ALTER TABLE que se va a convertir contiene alguna de las definiciones no compatibles que se muestran a continuación, la conversión fallará y el resultado será una cadena vacía.
-
Crear los siguientes tipos de índices con partes de clave funcionales: PRIMARY KEY, UNIQUE KEY, INDEX/KEY y FULLTEXT INDEX. Estos índices solo se pueden crear sobre campos.
Definiciones de clave primaria, clave única, índice, clave o índice de texto completo que contienen funciones o expresiones. Ejemplos:
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))))); Crear índices espaciales.
Especificar la opción ON [DELETE | UPDATE] SET NULL para las claves foráneas.
Cláusulas y opciones ignoradas
Las cláusulas y opciones que se muestran a continuación se ignoran; no se resuelven ni se convierten cuando se especifican en las instrucciones DDL sincronizadas.
USING BTREE o USING HASH
KEY_BLOCK_SIZE, index_type, WITH PARSER, COMMENT, VISIBLE | INVISIBLE, ENGINE_ATTRIBUTE o SECONDARY_ENGINE_ATTRIBUTE en index_option
[NOT] ENFORCED para las restricciones CHECK
MATCH FULL | MATCH PARTIAL | MATCH SIMPLE para las claves foráneas
Límites
Debido a los límites de los tenants de MySQL de OceanBase Database, es posible que se devuelva un error cuando las instrucciones DDL sincronizadas se convierten y se ejecutan en un tenant de MySQL de OceanBase Database en los escenarios que se muestran a continuación:
Los tenants de MySQL de OceanBase Database no permiten crear los siguientes tipos de restricciones sobre ciertos tipos de campos: PRIMARY KEY, UNIQUE KEY, INDEX/KEY, FULLTEXT INDEX y FOREIGN KEY.
Los tenants de MySQL de OceanBase Database no admiten especificar ciertas funciones o expresiones en las restricciones CHECK.
Los tenants de MySQL de OceanBase Database no admiten especificar ciertas funciones o expresiones en las restricciones FOREIGN KEY.