当前位置: 首页 > Oracle, Oracle 12c > 正文

ORACLE 12C新特性-不可见字段

在11G版本,ORACLE推出了不可见索引新特性,在12C版本,ORACLE又推出了不可见字段特性,可以很方便的屏蔽敏感数据。在对不可见字段做操作时,必须明确指定这个字段,否则操作将被拒绝,下面简单测试下这个功能。

创建测试表,包含不可见字段。

SQL> create table invisible_col(id number,name varchar2(20),addr varchar2(30) invisible);

Table created.

上述测试表的ADDR字段就是不可见字段,通过DESC描述这张测试表结构时,不会显示不可见自动的信息。

SQL> desc invisible_col
 Name                               Null?    Type
 ---------------------------------- -------- -------------------
 ID                                          NUMBER
 NAME                                        VARCHAR2(20)

insert操作如果不指定不可见字段,是不允许对不可见字段插入数据的。

SQL> insert into invisible_col values(1,'dbdream','beijing');
insert into invisible_col values(1,'dbdream','beijing')
            *
ERROR at line 1:
ORA-00913: too many values

SQL> insert into invisible_col(id,name,addr) values (1,'dbdream','beijing');

1 row created.

SQL> commit;

Commit complete.

如果在查询是不指定不可见字段,是查询不到这个字段的信息的。

SQL> select * from invisible_col;

        ID NAME
---------- ----------------------------------------
         1 dbdream

必须明确指定不可见字段,才可以查询到。

SQL> select id,name,addr from invisible_col;

        ID NAME                                     ADDR
---------- ---------------------------------------- -------------
         1 dbdream                                  beijing

update操作就不用说了。

SQL> update invisible_col set addr='shanghai';

1 row updated.

SQL> commit;

Commit complete.

在12C版本之前,要实现这个功能,通常都是使用视图屏蔽掉这个字段,但插入操作就会有问题,VPD技术好像也可以实现这个功能,使用12C版本就可以很方便实现了。

要想将表的字段设置成不可见字段或取消不可见字段也很容易,使用ALTER TABLE MODIFY命令就可以很方便设置字段是可见还是不可见属性。

SQL> alter table invisible_col modify (addr visible); 

Table altered.
SQL> desc invisible_col
 Name                                 Null?    Type
 ------------------------------------ -------- ---------------
 ID                                            NUMBER
 NAME                                          VARCHAR2(20)
 ADDR                                          VARCHAR2(30)

将字段属性设置为visible就是可见字段了,当设置为visible属性,就可以直接对这个字段操作,而不需要明确指定了。

SQL> insert into invisible_col(id,name,addr) values (2,'stream','beijing');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from invisible_col;

        ID NAME                                     ADDR
---------- ---------------------------------------- ----------
         1 dbdream                                  shanghai

当然,也可以通过ALTER TABLE MODIFY命令直接将字段设置为不可见字段。

SQL> alter table invisible_col modify (addr invisible);

Table altered.

SQL> desc invisible_col
 Name                                 Null?    Type
 ------------------------------------ -------- -----------------
 ID                                            NUMBER
 NAME                                          VARCHAR2(20)

 

本文固定链接: https://www.dbdream.com.cn/2014/01/oracle-12c%e6%96%b0%e7%89%b9%e6%80%a7-%e4%b8%8d%e5%8f%af%e8%a7%81%e5%ad%97%e6%ae%b5/ | 信春哥,系统稳,闭眼上线不回滚!

该日志由 dbdream 于2014年01月19日发表在 Oracle, Oracle 12c 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: ORACLE 12C新特性-不可见字段 | 信春哥,系统稳,闭眼上线不回滚!
关键字: , , ,

ORACLE 12C新特性-不可见字段:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter