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

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>  create table t (userid number GENERATED ALWAYS AS IDENTITY,uname varchar2(200));

Table created.

SQL> select * from t;

no rows selected

SQL>  insert into t valuse('aaa');
 insert into t valuse('aaa')
                      *
ERROR at line 1:
ORA-00928: missing SELECT keyword

SQL>  insert into t values(1,'aaa');
 insert into t values(1,'aaa')
*
ERROR at line 1:
ORA-32795: cannot insert into a generated always identity column

SQL>  insert into t values('aaa');
 insert into t values('aaa')
             *
ERROR at line 1:
ORA-00947: not enough values

SQL>  insert into t(uname) values('aaa');

1 row created.

SQL>  insert into t(uname) values('bbb');

1 row created.

SQL>  insert into t(uname) values('ccc');

1 row created.

SQL> select * from t;
    USERID UNAME
---------- ------------------------------
         1 aaa
         2 bbb
         3 ccc
使用metadata包可以看到表的DDL
SQL> select dbms_metadata.get_ddl('TABLE','T') FROM DUAL;

CREATE TABLE "SYS"."T"
   (    "USERID" NUMBER GENERATED ALWAYS AS IDENTITY MINVALUE 1 MAXVALUE 9999999
999999999999999999999 INCREMENT BY 1 START WITH 1 CA
CHE 20 NOORDER  NOCYCLE  NOT NULL ENABLE,
        "UNAME" VARCHAR2(200)
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 214748364
5
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CAC
HE DEFAULT)
  TABLESPACE "SYSTEM"

仔细看其实这个自增列就是序列的语法,其实内部来讲就是一个序列。

转载自:

http://blog.itpub.net/26390465/viewspace-1816492/

Oracle 12c的自增列Identity Columns的更多相关文章

  1. oracle 实现插入自增列(类似SqlServer Identity)

    oracle不像sql server 有关键字identity直接可插入数据时自增 ,Oracle是不能用Identity,可以使用Sequence Create Table Tempinfo( id ...

  2. [转]oracle 实现插入自增列

    本文转自:http://blog.csdn.net/love_zt_love/article/details/7911104 刚使用oracle,它和sql server 好多地方还是有所不同的,简单 ...

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

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

  4. oracle 12c中的隐含列

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

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

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

  6. ORACLE表建立自增列

    create tablespace studentDBdatafile 'E:\datafiles_1.dbf' size 10m; create user Huang_Ying_Boidentifi ...

  7. Oracle自增列

    一.介绍: 在设计数据库时,有时候希望表的某一列为自增列,例如编号,本文就介绍如何在oracle数据库中实现自增列,需要两个步骤: 1)构建序列(sequence) 在oracle中sequence就 ...

  8. Oracle自增列创建方法

    最近在做Oracle的项目,由于以前没有接触过Oracle的开发,遇到了不少的问题,比如给Oracle表添加自增列,与SQL Server就不同. Oracle没有自增字段这样的功能,但是通过触发器( ...

  9. SQL SERVER 自增列的方法

    declare @Table_name varchar(60) set @Table_name = ''; if Exists(Select top 1 1 from sysobjects       ...

随机推荐

  1. ubuntu 安装cuda 9.1 pytorch 0.3.0

    毕业再没用配过机器学习的环境了,既亲切又陌生,久违了. 系统 mint18  x64 1安装cuda 按官网提示 选的9.1版  https://developer.nvidia.com/cuda-t ...

  2. 如何在windows下安装与配置Appium

    appium是一款open source 移动自动化测试框架,既支持Android 也支持IOS 工具/原料 JDK adt-bundle-windows node python appium rob ...

  3. Linux ----> debian中环境的常见配置

    环境: (debian 9)/(lubuntu18.0.4+virtualbox) 1.配置下载源: gedit /etc/apt/sources.list #163 deb http://mirro ...

  4. Python自学:第二章 合并(拼接字符串)

    first_name = "ada" last_name = "lovelace" full_name = first_name + " " ...

  5. android -------- ConstraintLayout Guideline和Barrier(四)

    前面的文章 ConstraintLayout 介绍 (一) ConstraintLayout约束属性 (二) ConstraintLayout 宽高比和偏移量比(三) 此博文主要讲解:Guidelin ...

  6. Confluence 6 删除和归档空间

    我们希望你已经成功的完成了这个任务,同时还学习到了一些有关 Confluence 空间的多样性和强大的功能.后推到 18 个月以后,我们来看看你的火星移民计划进行的怎么样了. 如果你希望删除老的空间( ...

  7. 用where导致group by分组字段的索引失效

    把两个单独的索引合并成一个组合索引,即把where条件字段的索引和group by的分组字段索引组合成一个. 如果分组的字段需要用函数处理,可以用索引函数 Generated Column(函数索引) ...

  8. 【转】XP系统远程桌面连接2012R2提示:远程计算机需要网络级别身份验证,而您的计算机不支持该验证

    一.背景 因对方客户的服务器是内网的,需要操作更新服务器的数据库表信息,因此远程对方客户办公司的电脑远程服务器:但是在远程桌面连接出现问题. 二.错误问题 错误问题:“远程计算机需要网络级别身份验证, ...

  9. 『PyTorch』第三弹_自动求导

    torch.autograd 包提供Tensor所有操作的自动求导方法. 数据结构介绍 autograd.Variable 这是这个包中最核心的类. 它包装了一个Tensor,并且几乎支持所有的定义在 ...

  10. 使用telnet模拟邮件的收发

    smtp协议是一个简单的邮件传输协议,利用它我们可以将邮件发送给别人,这里将通过telnet这个程序利用smtp协议从网易向gmail发送一封邮件 基本步骤如下: 1.使用telnet连接smtp服务 ...