虚拟列

本文为您介绍迁移 Oracle 数据库的数据至 OceanBase 数据库 Oracle 租户时,CREATE TABLE DDL 虚拟列的支持转换范围。

总览

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 ]... ]

evaluation_edition_clause:
EVALUATE USING { CURRENT EDITION | EDITION edition | NULL EDITION }

unusable_editions_clause:
[ UNUSABLE BEFORE { CURRENT EDITION | EDITION edition } ]
[ UNUSABLE BEGINNING WITH { CURRENT EDITION | EDITION edition | NULL EDITION } ]

支持的范围

  • 支持列类型定义 column_name datatype,类型转化详情请参见 数据类型转换

  • 支持指定 VISIBLE | INVISIBLE 属性,缺省的情况为 VISIBLE,不会显示声明 VISIBLE。

  • 支持 inline_constraint 行内约束,详情请参见 约束

  • 支持虚拟列定义 GENERATED ALWAYS AS column_expressioncolumn datatype AS column_expression。示例如下:

    重要

    不支持虚拟列定义 GENERATED ALWAYS AS identity,数据传输结构迁移转换将忽略该虚拟列定义,仅迁移字段名及类型定义。

    CREATE TABLE T (C1 CHAR, C2 CHAR GENERATED ALWAYS AS (SUBSTR(C1,1,2)));
    CREATE TABLE T (C1 CHAR, C2 CHAR AS (SUBSTR(C1,1,2)));

忽略的属性

说明

如果同步的 DDL 中包含以下属性的定义,则这些属性不会被解析和转换,最终会被忽略。

  • 不支持列排序规则定义 COLLATE column_collation_name,该 option 会被忽略。

  • 不支持使用 evaluation_edition_clause 子句来指定 Resolver 在解析有版本的 PL/SQL 函数的名称时会搜索的版本。该 option 会被忽略。

  • 不支持指定虚拟列表达式不能用于计算一个或多个版本中的查询 unusable_editions_clause 子句,会忽略该 option。