隐藏列
在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 a10 SQL> select * from test_a; NAME AGE ---------- ---------- lei 25 lei 25
--指定字段查询
SQL> select name,age,sal from test_a; NAME AGE SAL ---------- ---------- ---------- lei 25 lei 25 5000
2.修改字段为隐藏/可见字段
SQL> alter table test_a modify(sal visible); Table altered. SQL> select * from test_a; NAME AGE SAL ---------- ---------- ---------- lei 25 lei 25 5000
SQL> alter table test_a modify(sal invisible); Table altered. SQL> select * from test_a; NAME AGE ---------- ---------- lei 25 lei 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
时间: 2024-10-12 00:06:20