Invisible Columns

使用select * from ,desc 等看不到该列,

DROP TABLE tab1 PURGE;

CREATE TABLE tab1 (
id NUMBER,
description VARCHAR2(50) INVISIBLE
); DESC tab1;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER SQL> INSERT INTO tab1 VALUES (1);
COMMIT; SELECT * FROM tab1; ID
----------
1 SQL>

在明确的指定它的名字进行查询的时候仍然是可用的

INSERT INTO tab1 (id, description) VALUES (2, 'TWO');
COMMIT; SELECT id, description
FROM tab1; ID DESCRIPTION
---------- --------------------------------------------------
1
2 TWO SQL>

下面关于隐含列的几项内容

  • 虚拟列可以设成invisible
  • 一个表可以对隐含列就行分区,
  • 外部表,表簇,临时表中不能包含隐含列
  • 用户自定义的类型不能包含隐含属性
  • You can not make system generated hidden columns visible.

Invisible Columns and Column Ordering

隐含列不分配列的顺序(colum_id),如果一个可见的列设为不可见,那么这个列将放到最后一列

DROP TABLE tab1 PURGE;

CREATE TABLE tab1 (
a NUMBER,
b NUMBER,
c NUMBER INVISIBLE
); COLUMN column_name FORMAT A15 SELECT column_id,
column_name,
hidden_column
FROM user_tab_cols
WHERE table_name = 'TAB1'
ORDER BY column_id; COLUMN_ID COLUMN_NAME HID
---------- --------------- ---
1 A NO
2 B NO
C YES SQL> ALTER TABLE tab1 MODIFY b INVISIBLE;
ALTER TABLE tab1 MODIFY c VISIBLE; SELECT column_id,
column_name,
hidden_column
FROM user_tab_cols
WHERE table_name = 'TAB1'
ORDER BY column_id; COLUMN_ID COLUMN_NAME HID
---------- --------------- ---
1 A NO
2 C NO
B YES SQL> ALTER TABLE tab1 MODIFY b VISIBLE; SELECT column_id,
column_name,
hidden_column
FROM user_tab_cols
WHERE table_name = 'TAB1'
ORDER BY column_id; COLUMN_ID COLUMN_NAME HID
---------- --------------- ---
1 A NO
2 C NO
3 B NO SQL>

强制类型Invisible Columns

隐含列的强制/可选等属性仍然是有效的,如下例:(隐含列的not null属性仍然是生效的)

DROP TABLE tab1 PURGE;

CREATE TABLE tab1 (
id NUMBER NOT NULL,
description VARCHAR2(50) NOT NULL,
created_date DATE INVISIBLE NOT NULL
); COLUMN column_name FORMAT A20 SELECT column_id,
column_name,
nullable,
hidden_column
FROM user_tab_cols
WHERE table_name = 'TAB1'
ORDER BY column_id; COLUMN_ID COLUMN_NAME N HID
---------- -------------------- - ---
1 ID N NO
2 DESCRIPTION N NO
CREATED_DATE N YES SQL> INSERT INTO tab1 VALUES (1, 'ONE');
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("TEST"."TAB1"."CREATED_DATE") SQL> ALTER TABLE tab1 MODIFY created_date NULL;
INSERT INTO tab1 VALUES (1, 'ONE'); 1 row created. SQL>

oracle 12c中的隐含列的更多相关文章

  1. oracle 12c 中asm元数据是否有所变化

    详见原文博客链接地址: oracle 12c 中asm元数据是否有所变化

  2. Oracle 12c中新建pdb用户登录问题分析

    Oracle 12c新建用户登录问题分析1 用sys用户新建用户,提示公用用户名或角色名无效.原因:Oracle 12c中,在容器中建用户(或者应该称为使用者),须在用户名前加c##.默认登录连接的就 ...

  3. 浅析Oracle 12c中Data Guard新特性

    浅析Oracle 12c中Data Guard新特性   写在前面 无论是做Oracle运维的小伙伴还是老伙伴,想必对Oracle数据库的数据级灾备核心技术—Data Guard是再熟悉不过了!这项从 ...

  4. 如何在Oracle 12C中Drop/Truncate多个分区 (Doc ID 1482264.1)

    How to Drop/Truncate Multiple Partitions in Oracle 12C (Doc ID 1482264.1) APPLIES TO: Oracle Databas ...

  5. 如何在Oracle 12C中添加多个分区 (Doc ID 1482456.1)

    How to Add Multiple Partitions in Oracle 12C (Doc ID 1482456.1) APPLIES TO: Oracle Database - Enterp ...

  6. ORACLE 12C Identity Column(身份列) 实现自增长字段

    Oracle 12c提供的Identity Column特性简化了自增字段的定义. 声明自增字段通常有3种常见的用法,以下三种方式都支持INSERT语句中省略自增字段的插入,但有些许差别. 1. GE ...

  7. oracle 12c中种子数据库的隐藏与保护

    Oracle 12c种子数据库(pdbseed)的状态是read only,这是因为Oracle对种子数据库进行了保护,避免遭到破坏.保护好种子数据库的目的,是为了以此为模板,新建pdb数据库. 新的 ...

  8. Oracle 12C -- 在相同的列的集合上创建多个索引

    在12C中,可以在相同的列的集合上创建多个索引,但是多个索引的类型要不同.同一时刻,只有一个是可见的. SQL> create table emp_tab as select * from em ...

  9. 在Oracle 12C中使用scott账号

    在Oracle11g中默认是有scott账号的,但在Oracle 12C中则不能直接使用. 我的机器环境: 操作系统:Windows Server 2008 R2 64位 Oracle版本:Oracl ...

随机推荐

  1. a版本冲刺第七天

    队名:Aruba   队员: 黄辉昌 李陈辉 林炳锋 鄢继仁 张秀锋 章  鼎 学号 昨天完成的任务 今天做的任务 明天要做的任务 困难点 体会 408 学习活动的消息传递和日志分析 因为大家都在赶进 ...

  2. POJ2763 Housewife Wind

      Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 9701   Accepted: 2661 Description Aft ...

  3. SQL Server数据库常用函数

    好久没学习新知识了.今天学了下sql的一些常用语句.人还是需要不断学习进步的 否则只能停滞不前. 先从最简单的一句开始说起吧. select *from 表名 这里*的含义 表示了表的各字段,以逗号隔 ...

  4. 【整理】Word OpenXML常用标签

    一.背景 最近在做关于Word内容自动标引,需要了解Word的底层结构,顺便梳理一下OpenXML的标签含义,方便后续开发,提高对OpenXML标签的查找效率,也是一个熟悉的过程. 二.内容 < ...

  5. HTTP协议 -- 认清协议常用状态码

    HTTP协议作为web服务的基础,理所应当受到重视,但是周围的同事能够讲清楚HTTP协议的凤毛麟角.既然是基础,就应该早一点掌握,所以近半年(2016-2月——2016年6月),不准备学习新技术了.首 ...

  6. HTML-如何让自己的网页标题处可以显示网站的logo?

    <link rel="Bookmark" href="/forum_images/ffico.png" /> <link rel=" ...

  7. Dom4j把xml转换成Map(固定格式)

    /** * 可解析list * * @param fileName * @return * @throws Exception */ @SuppressWarnings("unchecked ...

  8. Bash 中的 _ 是不是环境变量

    首先,我们想到的会是 export(等价于 declare -x)命令: $ export | grep 'declare -x _=' 没有找到,那么结论就是 _ 不是环境变量?当然没那么简单,否则 ...

  9. FMDB线程安全

    //打开数据库 如果没有就创建    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUse ...

  10. bzoj1854 游戏

    Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性 ...