设为首页 加入收藏

TOP

Oracle 12c的自增列Identity Columns
2015-11-13 01:24:15 来源: 作者: 【 】 浏览:7
Tags:Oracle 12c Identity Columns

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"


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


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle中如何评估真正的并发sessi.. 下一篇Oracle 12c In-Memory 初探

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: