oracle 12c中的隐含列
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中的隐含列的更多相关文章
- oracle 12c 中asm元数据是否有所变化
详见原文博客链接地址: oracle 12c 中asm元数据是否有所变化
- Oracle 12c中新建pdb用户登录问题分析
Oracle 12c新建用户登录问题分析1 用sys用户新建用户,提示公用用户名或角色名无效.原因:Oracle 12c中,在容器中建用户(或者应该称为使用者),须在用户名前加c##.默认登录连接的就 ...
- 浅析Oracle 12c中Data Guard新特性
浅析Oracle 12c中Data Guard新特性 写在前面 无论是做Oracle运维的小伙伴还是老伙伴,想必对Oracle数据库的数据级灾备核心技术—Data Guard是再熟悉不过了!这项从 ...
- 如何在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 ...
- 如何在Oracle 12C中添加多个分区 (Doc ID 1482456.1)
How to Add Multiple Partitions in Oracle 12C (Doc ID 1482456.1) APPLIES TO: Oracle Database - Enterp ...
- ORACLE 12C Identity Column(身份列) 实现自增长字段
Oracle 12c提供的Identity Column特性简化了自增字段的定义. 声明自增字段通常有3种常见的用法,以下三种方式都支持INSERT语句中省略自增字段的插入,但有些许差别. 1. GE ...
- oracle 12c中种子数据库的隐藏与保护
Oracle 12c种子数据库(pdbseed)的状态是read only,这是因为Oracle对种子数据库进行了保护,避免遭到破坏.保护好种子数据库的目的,是为了以此为模板,新建pdb数据库. 新的 ...
- Oracle 12C -- 在相同的列的集合上创建多个索引
在12C中,可以在相同的列的集合上创建多个索引,但是多个索引的类型要不同.同一时刻,只有一个是可见的. SQL> create table emp_tab as select * from em ...
- 在Oracle 12C中使用scott账号
在Oracle11g中默认是有scott账号的,但在Oracle 12C中则不能直接使用. 我的机器环境: 操作系统:Windows Server 2008 R2 64位 Oracle版本:Oracl ...
随机推荐
- js限制输入框只能输入数字
分享下js限制输入框中只能输入数字的方法,包括整数与小数,分享几个例子,有需要的朋友参考下. 1.使用正则表达式限制输入框只能输入数字: <input type="text" ...
- Leetcode 216. Combination Sum III
Find all possible combinations of k numbers that add up to a number n, given that only numbers from ...
- gcc 编译时 include 搜索路径
这是一个不复杂的问题:但是网上很多回答都不全面:偶找了一个比较全面的(测试过): 引用http://blog.csdn.net/fjb2080/archive/2010/01/23/5247494.a ...
- JS中匿名函数$(function(){ })和(function(){})()的区别
“$(function(){ });” Jquery语法的匿名函数,用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在: (通过这样就可以在页面加载完成时通过ajax再异步加载一些数据) “ ...
- PHP 文件管理
主页面: <?php session_start(); $filename=""; if(!empty($_SESSION["lujing"])) { $ ...
- HTTP超文本传输协议-HTTP/1.1中文版
摘要 超文本传输协议(HTTP)是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议.它是一种通用的,不分状态(stateless)的协议,除了诸如名称服务和分布对象管理系统之类的超文本用途外 ...
- C++变参数模板和...操作符
https://en.wikipedia.org/wiki/Variadic_template https://msdn.microsoft.com/en-us/library/dn439779.as ...
- Texstudio中文乱码问题
参考 http://blog.csdn.net/lanbing510/article/details/8723619 1. 用XeLatex编译,这样生成的pdf没有乱码 2.在texstudio中E ...
- 图解TCP、IP笔记
七层:应用层.表示层.会话层.传输层.网络层.数据链路层.物理层 应用层:与通信无关的功能 表示层:例如转换编码格式 会话层:采用哪种连接方法 传输层以下: 传输层:确立连接与断开连接重发 网络层:从 ...
- SQL SERVER批量修改表名前缀
比如前缀由mms_修改为 ets_ exec sp_msforeachtable @command1=' declare @o sysname,@n sysname ...