全部產品
Search
文件中心

ApsaraDB for OceanBase:增加列和列屬性

更新時間:Jul 01, 2024

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

總覽

add_column_clause:
ADD
   ( {column_definition | virtual_column_definition
      [, column_definition | virtual_column_definition] ...
     } )
   [ column_properties ]
   [ ( out_of_line_part_storage [, out_of_line_part_storage]... ) ]

column_definition:
column [ datatype [ COLLATE column_collation_name ] ]
  [ SORT ] [ VISIBLE | INVISIBLE ]
  [ DEFAULT [ ON NULL ] expr | identity_clause ]
  [ ENCRYPT encryption_spec ]
  [ { inline_constraint }...
  | inline_ref_constraint
  ]

virtual_column_definition:
column [ datatype [ COLLATE column_collation_name ] ]
  [ VISIBLE | INVISIBLE ]
  [ GENERATED ALWAYS ] AS (column_expression) [ VIRTUAL ]
  [ evaluation_edition_clause ] [ unusable_editions_clause ]
  [ inline_constraint [ inline_constraint ]... ]

column_properties:
{ object_type_col_properties
| nested_table_col_properties
| { varray_col_properties | LOB_storage_clause }
    [ (LOB_partition_storage [, LOB_partition_storage ]...) ]
| XMLType_column_properties
}...

out_of_line_part_storage:
PARTITION partition
  { nested_table_col_properties | LOB_storage_clause | varray_col_properties }
    [ nested_table_col_properties | LOB_storage_clause | varray_col_properties ]...
[ ( SUBPARTITION subpartition
   { nested_table_col_properties | LOB_storage_clause | varray_col_properties }
     [ nested_table_col_properties | LOB_storage_clause | varray_col_properties
     ]...
    [, SUBPARTITION subpartition
     { nested_table_col_properties | LOB_storage_clause | varray_col_properties }
       [ nested_table_col_properties | LOB_storage_clause | varray_col_properties
       ]...
    ]...
  )
]

支援的範圍

  • 支援增加列,詳情請參見 普通列。樣本如下:

    ALTER TABLE T ADD C1 NUMBER;
  • 支援增加虛擬列,詳情請參見 虛擬列。樣本如下:

    ALTER TABLE T ADD C1 NUMBER GENERATED ALWAYS AS (C+1);
  • 支援增加列的 VISIBLE | INVISIBLE 屬性。樣本如下:

    ALTER TABLE T ADD C1 NUMBER INVISIBLE;
  • 支援增加列的行內約束 not nulldefault value。樣本如下:

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

    ALTER TABLE T ADD (C1 NUMBER, C2 NUMBER, C3 NUMBER);
    ALTER TABLE T ADD (C1 NUMBER) ADD (C2 NUMBER) ADD (C3 NUMBER);

不支援的範圍

  • 不支援增加沒有指定欄位類型的虛擬列,會報錯。

  • 不支援 identity_clause 子句定義自增列,會報錯。

忽略的屬性

說明

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

  • out_of_line_part_storage 子句為分區表中新增列指定儲存屬性,會忽略該 option。

  • 會忽略新增行內約束 uniqueprimary keycheck 和外鍵。

  • constraint_state 約束狀態屬性,會忽略該 option。

  • 不支援 constraint name 約束別名,會忽略該 option。

  • 不支援 column_properties 子句修改物件類型、巢狀表格、varray 或 LOB 列的儲存特徵,會忽略該 option。