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. 实现简单sed替换功能的python脚本

    #可以用来修改配置文件参数 # -*- coding:utf-8 -*- import os,sys old = sys.argv[1] new = sys.argv[2] file = sys.ar ...

  2. Neural Style学习2——环境安装

    neural-style Installation This guide will walk you through the setup for neural-style on Ubuntu. Ste ...

  3. python 中文乱码问题2

    1.文件存为utf-8的格式,windows和linux两个环境都可以用 2.中文输出可以采用u方法 比如:print u'成年'

  4. bzoj 4553 && HEOI2016 day1t3 seq

    一个序列在所有变换中都单调不降的条件是i<j,a[i]<=min[j],mx[i]<=a[j],所以套CDQ就行了. #include<iostream> #includ ...

  5. a冲刺总结随笔

    Alpha版本计划完成一般的便签功能:   预期项目 实际进展 首页瀑布流方块布局 1 按新旧顺序排列 1 增加记录 1 编辑文字信息 1 标记喜爱 0 删除文字信息 1 手动添加分类 0 反馈页面 ...

  6. bandicam如何录制视频

    我们一般都很熟悉这类软件:屏幕录制专家和kk录制等,这些都是国内比较优秀的作品.不过exe的封装格式以及录制的清晰度让人很纠结.所以这里要为大家分享的是一款韩国人写录制软件Bandicam.Bandi ...

  7. fping tcping hping nmap nc

    [root@test ~]# fping -a -g 192.168.40.1 192.168.40.240 |nl   #-a   扫描alive主机,-g扫描一个段的ip地址 [root@test ...

  8. 为何JAVA虚函数(虚方法)会造成父类可以"访问"子类的假象?

      首先,来看一个简单的JAVA类,Base. 1 public class Base { 2 String str = "Base string"; 3 protected vo ...

  9. 【转】Java enum的用法详解

    用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...

  10. apk 破解

    Apk破解工具:AndroidCrackTool for Mac http://www.52pojie.cn/thread-452617-1-1.html 如何防止Unity3D代码被反编译 http ...