Este tema describe el alcance de conversión compatible de las operaciones DDL ALTER TABLE en columnas durante la migración de datos desde una base de datos MySQL hacia un inquilino MySQL de OceanBase Database.
Sintaxis
ALTER TABLE tbl_name
[alter_option [, alter_option] ...]
alter_option: {
ADD [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
| ADD [COLUMN] (col_name column_definition,...)
| ALTER [COLUMN] col_name {
SET DEFAULT {literal | (expr)}
| SET {VISIBLE | INVISIBLE}
| DROP DEFAULT
}
| CHANGE [COLUMN] old_col_name new_col_name column_definition
[FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| MODIFY [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
| ORDER BY col_name [, col_name] ...
| RENAME COLUMN old_col_name TO new_col_name
}
Operaciones DDL compatibles
Use ADD COLUMN para agregar una o más columnas. Para obtener más información sobre cómo definir una columna, consulte Create a column. También puede especificar la palabra clave FIRST | AFTER.
Use
ALTER COLUMN SET DEFAULTpara modificar el valor predeterminado de una columna.Use
ALTER COLUMN DROP DEFAULTpara eliminar el valor predeterminado de una columna.Use
CHANGE COLUMNoMODIFY COLUMNpara cambiar o modificar una columna.Use
DROP COLUMNpara eliminar una columna.
Operaciones no compatibles
Si una instrucción DDL que se va a sincronizar 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.
Usar
ALTER COLUMN SET VISIBLE | INVISIBLEpara modificar la visibilidad de una columna.Usar
ORDER BY col_name.-
Usar
RENAME COLUMNpara cambiar el nombre de una columna.ALTER TABLE t RENAME COLUMN d TO g;
Cláusulas y opciones ignoradas
Las cláusulas y opciones que se muestran a continuación se ignoran y no se resuelven ni se convierten cuando se especifican en las instrucciones DDL sincronizadas.
Atributo FIRST | AFTER (si una instrucción DDL ALTER TABLE contiene la cláusula
MODIFY COLUMNoCHANGE COLUMN, este atributo se ignora).
Límites
Debido a los límites de los inquilinos MySQL de OceanBase Database, es posible que se devuelva un error cuando las instrucciones DDL sincronizadas se convierten y se ejecutan en un inquilino MySQL de OceanBase Database en los escenarios que se describen a continuación.
El uso de la cláusula
MODIFY COLUMNoCHANGE COLUMNpara modificar el tipo de campo puede fallar. Esto ocurre porque algunos tipos de campo no son compatibles con los inquilinos MySQL de OceanBase Database.El uso de la instrucción
MODIFY COLUMNoCHANGE COLUMNpara modificar la longitud del campo puede fallar.El uso de la instrucción
ALTER COLUMN SET DEFAULTpara establecer un valor predeterminado puede fallar. Esto se debe a que algunas funciones o expresiones no son compatibles con los inquilinos MySQL de OceanBase Database.No es posible eliminar columnas que se usan como claves primarias, claves únicas o índices normales, ni columnas con restricciones FOREIGN KEY.