修改列属性

本文为您介绍迁移 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。