すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for OceanBase (Deprecated):列に対する操作

最終更新日:Jan 19, 2025

このトピックでは、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 制約のある列は削除できません。