暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

12C 隐藏列

原创 章芋文 2013-10-28
545
12c创建隐藏列后,该字段通常不会显示:

SELECT * FROM statements in SQL

DESCRIBE commands in SQL*Plus

%ROWTYPE attribute declarations in PL/SQL

Describes in Oracle Call Interface (OCI)

在创建表时可以指定隐藏列,也可以新增隐藏列,也可以alter修改列属性
以下几种情况不能使用隐藏列:External tables、Cluster tables、Temporary tables、自定义的数据类型


简单测试如下:
[code]SQL> create table invsb_test (a int,b int INVISIBLE, c INT);

Table created.

Elapsed: 00:00:00.33

SQL> desc invsb_test
Name Null? Type
----------------------------------------- -------- ----------------------------
A NUMBER(38)
C NUMBER(38)

SQL> insert into invsb_test values(1,2,3);
insert into invsb_test values(1,2,3)
*
ERROR at line 1:
ORA-00913: too many values


Elapsed: 00:00:00.00
SQL> insert into invsb_test values(1,3);

1 row created.

Elapsed: 00:00:00.32

SQL> COL COLUMN_NAME FOR A30
SQL> select COLUMN_NAME,COLUMN_ID,HIDDEN_COLUMN from user_tab_cols where TABLE_NAME ='INVSB_TEST';

COLUMN_NAME COLUMN_ID HID
------------------------------ ---------- ---
C 2 NO
B YES
A 1 NO

Elapsed: 00:00:00.06
SQL> ALTER TABLE INVSB_TEST MODIFY (B visible);

Table altered.

Elapsed: 00:00:00.41
SQL> select COLUMN_NAME,COLUMN_ID,HIDDEN_COLUMN from user_tab_cols where TABLE_NAME ='INVSB_TEST';

COLUMN_NAME COLUMN_ID HID
------------------------------ ---------- ---
A 1 NO
B 3 NO
C 2 NO

Elapsed: 00:00:00.05
SQL> insert into invsb_test values(1,2,3);

1 row created.

Elapsed: 00:00:00.00
SQL> SELECT * FROM invsb_test;

A C B
---------- ---------- ----------
1 3
1 2 3

Elapsed: 00:00:00.00
SQL> ALTER TABLE INVSB_TEST MODIFY (B invisible);

Table altered.

Elapsed: 00:00:00.36
SQL> SELECT * FROM invsb_test;

A C
---------- ----------
1 3
1 2

Elapsed: 00:00:00.00
SQL>[/code]
官方文档:
http://docs.oracle.com/cd/E16655_01/server.121/e17636/tables.htm#ADMIN13866
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论