您的位置:首页 > 数据库 > Oracle

oracle中创建序列以及实际应用

2017-08-16 15:16 423 查看
1.oracle是通过序列(sequence)来处理自动增长列

用法:
create sequense my_seq   //创建序列名:my_seq
start with 1  //从1开始
increment by 1  //每次增长1
maxvalue 999999  //nomaxvalue(不设置最大值) ---最大值
minvalue 1  //最小值
cycle  //nocycle   一直累加,不循环   ;cycle 表示循环
nocache   ---缓存
//cache 10 表示一次产生10个号,
//但是使用缓存产生号,优点是提高效率,缺点是可能产生跳号
//上面表示从1开始,每次增长1,最大值为999999,之后又循环开始

 CREATE
SEQUENCE  CG_SEQ 

   START WITH 2

   INCREMENT BY 2 

   MINVALUE 1 

   MAXVALUE 999999999999999999999999999 

   CACHE 20 

   NOORDER  

   NOCYCLE ;

---创建表
create table test(id number primary key ,name varchar2(32));
insert into test values(CG_SEQ .nextval,'abc');
insert into test values(CG_SEQ .nextval,'bdc');
(1)可以为表中的列自动产生值
(2)由用户创建数据库对象,并可由多个用户共享
比如:system用户使用scott创建的序列,从什么开始增长?
答:接着scott里面的增长
(3)一般用于主键或唯一列

2.序列细节说明:
一旦定义了某个序列,可以使用currval,nextval
currval:返回sequence的当前值
nextval:返回增加sequence的值,然后返回sequence的值
比如:
序列名.currval:select 方案名.序列名.currval from dual;//用于查看当前序列是多少
序列名.nextval:select 方案名.序列名.nextval from dual;//用于查看当前序列的下一个值是多少

   select cg_seq.nextval  from  dual  

   select cg_seq.currval  from  dual
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 数据库 序列