Identity Columns很适合数据库中需要"surrogate keys"的场景。
依赖sequence产生器,每行的标识列会被赋予一个自增或自减的值。
缺省,标识列在创建的时候,会被被指定always选项,根据一个sequence来赋值。如果试图insert、update标识列的值都会报错。但是可以人为不指定always选项,从而支持insert、update操作。

Identity Columns(标识列)相关规则:
·一个表最多只能有一个Identity Columns
·Identity Columns必须被定义为number类型
·Identity Columns不可以有默认值
·Identity Columns上隐式被加上not null、not deferrable约束
·Identity Columns支持加密
·create table as select ... 创建的表不会继承Identity Columns,只会将其视为普通的number类型的列

创建一个含有identity column的表:

create table id_t(
s_key number generated as identity primary key ,
data varchar2()
);

插入数据:

insert into id_t (data) values('identity');
insert into id_t (data) values('column');
commit;

查看:

SQL> select * from id_t;

     S_KEY DATA
---------- ------------------------------
identity
column SQL>

尝试插入数据:

SQL> insert into id_t values(,'test');
insert into id_t values(,'test')
*
ERROR at line :
ORA-: cannot insert into a generated always identity column SQL> alter table id_t modify(s_key number generated by default as identity); Table altered. SQL> insert into id_t values(,'america'); row created. SQL> commit; Commit complete. SQL> select * from id_t; S_KEY DATA
---------- ------------------------------
identity
column
america SQL>

Oracle 12C -- Identity Columns(标识列)的更多相关文章

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

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

  2. oracle 12c中的隐含列

      Invisible Columns 使用select * from ,desc 等看不到该列, DROP TABLE tab1 PURGE; CREATE TABLE tab1 ( id NUMB ...

  3. Oracle 12c的自增列Identity Columns

    在Oracle的12c版本中,Oracle实现了类似MySQL中的auto_increment的自增列,下面我们看一起Oracle是怎么实现的. Oracle Database 12c Enterpr ...

  4. Oracle 12C -- 基于sequence的列的默认值

    12C支持先创建一个sequence,然后再将该sequence指定为某个列的值的默认表达式. 和"identity column"具有以下不同点: ·对列的个数没有限制 ·seq ...

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

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

  6. Oracle 12C -- Invisible Columns

    在12C中,当一个列被定义为"不可见"的时候,没有直接访问该列的sql语句是无法看到"不可见列"的,显式引用"不可见列"的语句是可以访问和操 ...

  7. Oracle列自增实现(2)-Identity Columns in Oracle Database 12c Release 1 (12.1)

    Oracle列自增-Identity Columns in Oracle Database 12c Release 1 (12.1) 在ORACLE 12C以前的版本中,如果要实现列自增长,需要通过序 ...

  8. oracle 12c 列式存储 ( In Memory 理论)

    随着Oracle 12c推出了in memory组件,使得Oracle数据库具有了双模式数据存放方式,从而能够实现对混合类型应用的支持:传统的以行形式保存的数据满足OLTP应用:列形式保存的数据满足以 ...

  9. Identity标识列

    SQL Server中,经常会用到Identity标识列,这种自增长的字段操作起来的确是比较方便.但它有时还会带来一些麻烦. 示例一 :当表中被删除了某些数据的时候,自增长列的编号就不再是一个连线的数 ...

随机推荐

  1. Android 关于操作栏 ActionBar 的设计原则【转载+整理】

    原文地址 本文内容 操作栏目的 基本布局 适应旋转和不同的屏幕尺寸 副操作栏的布局 操作栏按钮 上下文操作栏 操作栏清单 设计原则就是为你在编写 Android APP 时,尤其是如何安排操作按钮的位 ...

  2. java class 文件

    class 文件是什么 1).是对一个java类或一个java接口的全面描述:2).是对java程序二进制文件格式的精确定义:3).一个class文件中只能包含一个类或接口:4).作为程序传给jvm的 ...

  3. 使用jstl报错:According to TLD or attribute directive in tag file, attribute value does not accept any expressions

    使用jstl报错:According to TLD or attribute directive in tag file, attribute value does not accept any ex ...

  4. 保存html代码

    function svcode(F) { if (document.all) { var F = $id(F); var E = window.open("", "_bl ...

  5. 整理收集49条JQuery代码小结

    1. 如何创建嵌套的过滤器 . 代码如下: //允许你减少集合中的匹配元素的过滤器, //只剩下那些与给定的选择器匹配的部分.在这种情况下, //查询删除了任何没(:not)有(:has) //包含c ...

  6. PHP 字符串编码的转换

    原文链接:http://mangguo.org/php-string-encoding-convert-and-detect/ GBK 和 UTF-8 编码的转换是一个非常恶心的事情,比如像 PHP ...

  7. 【树莓派】使用xdrp远程登录树莓派的图形界面

    之前采用了vnc方式方式的树莓派,但是配置还有点步骤,刚才看了一下,试验了一下xrdp,直接很简单就好了. 树莓派DIY笔记之前有介绍过用VNC连接到树莓派的方法.在Windows下,当然还是自带的远 ...

  8. 有关/proc/uptime这个文件里两个参数所代表的意义

    有关/proc/uptime这个文件里两个参数所代表的意义: [root@app ~]#cat /proc/uptime 3387048.81 3310821.00 第一个参数是代表从系统启动到现在的 ...

  9. mint 设置无线 AP

    所需软件: sudo apt-get install hostapd 1. 创建 hostapd 的 configure 文件 新建 hostapd.conf 文件,存放位置任意,与后面修改的路径一致 ...

  10. Linux账号管理与ACL权限设置

    1:UID和GID 用户ID:在/etc/passwd中 群组ID:在/etc/group中 2:有效群组与初始群组 初始群组:/etc/passwd文件里面的GID 有效群组: groups #查看 ...