このトピックでは、MySQL データベースから OceanBase Database の MySQL テナントへのデータ移行中に、列に対する ALTER TABLE DDL 操作のサポートされている変換範囲について説明します。
構文
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
}
サポートされている DDL 操作
ADD COLUMN を使用して、1 つ以上の列を追加します。列の定義方法の詳細については、「列を作成する」をご参照ください。FIRST | AFTER キーワードも指定できます。
ALTER COLUMN SET DEFAULTを使用して、列のデフォルト値を変更します。ALTER COLUMN DROP DEFAULTを使用して、列のデフォルト値を削除します。CHANGE COLUMNまたはMODIFY COLUMNを使用して、列を変更します。DROP COLUMNを使用して、列を削除します。
サポートされていない操作
同期される DDL 文に以下のサポートされていない定義が含まれている場合、変換は失敗し、出力は空の文字列になります。
ALTER COLUMN SET VISIBLE | INVISIBLEを使用して、列の表示/非表示を切り替えます。ORDER BY col_nameを使用します。RENAME COLUMNを使用して、列の名前を変更します。ALTER TABLE t RENAME COLUMN d TO g;
無視される句とオプション
同期される DDL 文で指定された場合、以下の句とオプションは無視され、解決または変換されません。
FIRST | AFTER 属性 (ALTER TABLE DDL 文に
MODIFY COLUMN句またはCHANGE COLUMN句が含まれている場合、この属性は無視されます。)
制限事項
OceanBase Database の MySQL テナントの制限により、同期される DDL 文が変換され、以下のシナリオで OceanBase Database の MySQL テナントで実行されると、エラーが返される可能性があります。
MODIFY COLUMN句またはCHANGE COLUMN句を使用してフィールドタイプを変更すると失敗する可能性があります。これは、OceanBase Database の MySQL テナントでは特定のフィールドタイプがサポートされていないためです。MODIFY COLUMN句またはCHANGE COLUMN文を使用してフィールド長を変更すると失敗する可能性があります。ALTER COLUMN SET DEFAULT文を使用してデフォルト値を設定すると失敗する可能性があります。これは、OceanBase Database の MySQL テナントでは特定の関数または式がサポートされていないためです。プライマリキー、一意キー、または通常のインデックスとして使用されている列、あるいは FOREIGN KEY 制約のある列は削除できません。