在 Oracle 11g R1 中,Oracle 以不可见索引和虚拟字段的形式引入了一些不错的增强特性。继承前者并发扬光大,Oracle 12c R1 中引入了不可见字段思想。在之前的版本中,为了隐藏重要的数据字段以避免在通用查询中显示,我们往往会创建一个视图来隐藏所需信息或应用某些安全条件。在 12c R1 中,你可以在表中创建不可见字段。当一个字段定义为不可见时,这一字段就不会出现在通用查询中,除非在 SQL 语句或条件中有显式的提及这一字段,或是在表定义中有DESCRIBED。要添加或是修改一个不可见字段是非常容易的,反之亦然。
SQL> create table invisible_t(id int,name varchar2(20),passwd varchar2(20) invisible);
Table created.
SQL> insert into invisible_t values(1,'andy',1);
insert into invisible_t values(1,'andy',1)
*
ERROR at line 1:
ORA-00913: too many values
SQL> insert into invisible_t(id,name,passwd) values(1,'andy',1);
1 row created.
SQL> alter table invisible_t modify(passwd invisible);
Table altered.
SQL> desc invisible_t
Name Null? Type
ID NUMBER(38)
NAME VARCHAR2(20)
SQL> SET COLINVISIBLE ON
SQL> desc invisible_t
Name Null? Type
ID NUMBER(38)
NAME VARCHAR2(20)
PASSWD (INVISIBLE) VARCHAR2(20)
SQL> SET COLINVISIBLE Off
SQL> desc invisible_t
Name Null? Type
ID NUMBER(38)
NAME VARCHAR2(20)