ITPub博客

首页 > 数据库 > 国内数据库 > GBase8s 虚拟列详解(二)

GBase8s 虚拟列详解(二)

原创 国内数据库 作者:DMD_202007 时间:2021-04-20 15:12:54 0 删除 编辑


五、 虚拟列约束和索引

基于虚拟列创建约束和索引, GBase 8s 和 Oracle 的支持情况如下表所示:


GBase 8s

ORACLE

主键

N

Y

外键

N

Y

NOT NULL/NULL

Y

Y

CHECK 

Y

Y

UNIQUE/DISTINCT

N

Y

索引

只支持函数索引。

其它索引创建成功,但不生效。

Y

注: NOT NULL 约束只能在 create table 定义虚拟列时指定,不支持 alter modify not null

六、 虚拟列 DML 、 DQL

1. DML

不允许对虚拟列执行 INSERT 操作;

不允许在虚拟列上执行 UPDATE 语句;

支持在 UPDATE/DELETE 的 WHERE 语句中使用虚拟列;

支持 insert into t1 select  *  from  t2

2. DQL :

不支持在 group by 子句后使用。其余查询语法都支持。

七、 不同类型对象的使用

支持在普通表、视图、 RAW 表、分片表、 ROW TYPE 表使用虚拟列;

不支持在临时表以及外部表中使用虚拟列;

不支持作为哈希分区表的分区字段

支持在存储过程、包、触发器中使用虚拟列。

八、 虚拟列属性查询

1. SYSCOLUMNS

COLATTR 字段,新增值 256 或   768 表示:该列为虚拟列显式指定虚拟列数据类型时, COLATTR 值为 768 ,不显式指定时, COLATTR 值为 256 。

2. SYSDEFAULTSEXPR

新增 VTCOL 字段,作为虚拟列标识:

       值为 1 :定义为虚拟列表达式

       值为 0 : DEFAULT 表达式

DEFAULT 字段,可显式虚拟列列表达式

3. INFO COLUMNS

create table tab1(id int, mon_sal decimal(10,2), total_sal as(mon_sal * 12),v_sal float as(mon_sal*6));

info columns for tab1;

    Column name                 Type                Nulls

       id                   Interger                 yes

       mon_sal              decimal ( 10 , 2 )          yes

       total_sal            Virtual                  yes

       v_sal                Virtual-float            yes

4. JDBC 接口函数: getColumns ()

COLUMN_DEF 返回虚拟列表达式,否则返回 null 。

 

 

 

 

 

官网:


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69980677/viewspace-2768918/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-07-31

  • 博文量
    36
  • 访问量
    31942