增加列和列属性
本文为您介绍迁移 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 null
、default 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。会忽略新增行内约束
unique
、primary key
、check
和外键。constraint_state
约束状态属性,会忽略该 option。不支持
constraint name
约束别名,会忽略该 option。不支持
column_properties
子句修改对象类型、嵌套表、varray 或 LOB 列的存储特征,会忽略该 option。