全部產品
Search
文件中心

ApsaraDB for OceanBase:欄位操作

更新時間:Jul 01, 2024

本文為您介紹遷移 MySQL 資料庫的資料至 OceanBase 資料庫 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
}

支援的範圍

  • 支援 ADD COLUMN 來添加列(多列),列定義的詳情請參見 建立列。支援指定 FIRST | AFTER 關鍵字。

  • 支援修改欄位的預設值:ALTER COLUMN SET DEFAULT

  • 支援刪除欄位的預設值:ALTER COLUMN DROP DEFAULT

  • 支援修改列:CHANGE COLUMNMODIFY COLUMN

  • 支援刪除列:DROP COLUMN

不支援的範圍

重要

如果同步的 DDL 包含以下不支援的定義,則整個建表語句會轉換失敗(輸出空)。

  • 不支援修改列的可見度:ALTER COLUMN SET VISIBLE | INVISIBLE

  • 不支援 ORDER BY col_name

  • 不支援重新命名列:RENAME COLUMN

    ALTER TABLE t RENAME COLUMN d TO g;

忽略的屬性

重要

如果同步的 DDL 包含以下不支援的定義,則這些屬性將不會被解析和轉換,最終會被忽略。

  • MODIFY COLUMNCHANGE COLUMN 會忽略 FIRST | AFTER 關鍵字。

使用限制

重要

由於 OceanBase 資料庫 MySQL 租戶本身的限制,如果存在以下情境,同步的 DDL 被成功轉換後,執行到 OceanBase 資料庫 MySQL 租戶可能會報錯。

  • 通過 MODIFY COLUMNCHANGE COLUMN 修改欄位類型可能會失敗:OceanBase 資料庫 MySQL 租戶不支援修改為某些欄位類型。

  • 通過 MODIFY COLUMNCHANGE COLUMN 修改欄位長度可能會失敗。

  • 通過 ALTER COLUMN SET DEFAULT 設定預設值可能會失敗:OceanBase 資料庫 MySQL 租戶不支援某些函數/運算式。

  • 不支援刪除主鍵、唯一鍵、普通索引等相關的列,以及包含外鍵約束的列。