首页 > 代码库 > 12c 新特性-隐藏列

12c 新特性-隐藏列

隐藏列

在11G中,Oracle就引入了不可见索引和虚拟字段的形式。12c继续发扬光大,引入了不可见字段。

之前的版本我们往往会创建视图来隐藏某些字段,12c中so easy。

在12c中,你可以创建通过invisible关键词来创建/修改某个字段为不可见。这一字段在查询中不会出现,除非指定这个字段。同样插入数据的时候也一样,默认是不向不可见字段插数据。

如:

1.创建一个新表,并指定sal为隐藏字段

SQL> create table test_a(name varchar2(50),age number,sal number invisible);Table created.SQL> select * from test_a;no rows selected

--不指定字段插入:

SQL> insert into test_a values(‘lei‘,25,5000);insert into test_a values(‘lei‘,25,5000)            *ERROR at line 1:ORA-00913: too many values

 

--默认是不向不可见字段插数据。

 

SQL> insert into test_a values(‘lei‘,25);1 row created.

--指定字段插入

SQL> insert into test_a(name,age,sal) values(‘lei‘,25,5000);1 row created.

--不指定字段,则不显示隐藏字段

SQL> col name for a10SQL> select * from test_a;NAME  AGE---------- ----------lei   25lei   25

--指定字段查询

SQL> select name,age,sal from test_a;NAME  AGE     SAL---------- ---------- ----------lei   25lei   25    5000

2.修改字段为隐藏/可见字段

SQL> alter table test_a modify(sal visible);Table altered.SQL> select * from test_a;NAME  AGE     SAL---------- ---------- ----------lei   25lei   25    5000

 

 

SQL> alter table test_a modify(sal invisible);Table altered.SQL> select * from test_a;NAME  AGE---------- ----------lei   25lei   25

注意:临时表,外部表和集群表不支持不可见列

如:

 

SQL> create global temporary table test_b as select * from test_a;Table created.

没有不可见字段

SQL> desc test_b; Name   Null?    Type ----------------------------------------- -------- ---------------------------- NAME    VARCHAR2(50) AGE    NUMBER

修改为不可见字段

SQL> alter table test_b modify(age invisible);alter table test_b modify(age invisible)            *ERROR at line 1:ORA-54042: Invisible column is not supported on this type of table.

不支持。

 

转:http://www.cndba.cn/Expect-le/article/247

12c 新特性-隐藏列