全部產品
Search
文件中心

ApsaraDB for OceanBase:修改列屬性

更新時間:Jul 01, 2024

本文為您介紹遷移 Oracle 資料庫的資料至 OceanBase 資料庫 Oracle 租戶時,LTER TABLE DDL 修改列屬性的支援轉換範圍。

總覽

modify_column_clauses:
MODIFY
{ ( modify_col_properties | modify_virtcol_properties
    [, modify_col_properties | modify_virtcol_properties ]... )
| ( modify_col_visibility [, modify_col_visibility ]... )
| modify_col_substitutable
}

modify_col_properties:
column [ datatype ]
       [ COLLATE column_collation_name ]
       [ DEFAULT [ ON NULL ] expr | identity_clause | DROP IDENTITY ]
       [ { ENCRYPT encryption_spec } | DECRYPT ]
       [ inline_constraint ... ]
       [ LOB_storage_clause ]
       [ alter_XMLSchema_clause ]

modify_virtcol_properties:
column [ datatype ]
[ COLLATE collumn_collation_name ]
[ GENERATED ALWAYS ] AS (column_expression) [ VIRTUAL ]
evaluation_edition_clause [ unusable_editions_clause ]

modify_col_visibility:
column { VISIBLE | INVISIBLE }

modify_col_substitutable:
COLUMN column
[ NOT ] SUBSTITUTABLE AT ALL LEVELS
[ FORCE ]

支援的範圍

  • 支援修改列類型,資料類型映射請參見 資料類型轉換。樣本如下:

    ALTER TABLE T MODIFY C1 CHAR;
  • 支援修改約束 not null、default value。樣本如下:

    ALTER TABLE T MODIFY C1 NUMBER DEFAULT 1 NOT NULL;
  • 支援同時修改多個列。樣本如下:

    ALTER TABLE T MODIFY (C1 CHAR,C2 CHAR);

不支援的範圍

  • 不支援修改約束 unique、primary key,會報錯。

  • 不支援修改虛擬列,會報錯。

  • 不支援修改列 ENCRYPT\DECRYPT,會報錯。

  • 不支援 column { VISIBLE | INVISIBLE } 修改列的可見度,會報錯。

忽略的屬性

說明

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

  • 修改行內約束 check、references,會忽略。

  • 修改 LOB 儲存特徵,會忽略。

  • modify_col_substitutable 子句可設定或修改現有物件類型列的可替換性,會忽略該 option。