猪莫慌

oracle中的序列详解

一:序列的定义

  1:序列(sequence)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。

  2:不占用磁盘空间,占用内存。

  3:主要用途是生成表的主键值,可在插入语句中引用,也可通过查询检查当前值,或使序列增值下一个值。

二:创建序列

  创建序列需要CREATE SEQUENCE系统权限,创建语法如下:

  CREATE SEQUENCE 序列名

  [INCREMENT BY n]

  [START WITH n]

  [{MAXVALUE/MINVALUE n | NOMAXVALUE}]

  [{CYCLE|NOCYCLE}]

  [{CACHE n | NOCACHE}];

  其中:

  1:INCREMENT BY表示步长,默认为1,负值表示递减。

  2:START WITH序列初始值,默认为1。

  3:MAXVALUE序列产生最大值,默认为NOMAXVALUE,表没有最大,递减序列最大值为-1。

  4:MINVALUE序列产生最小值,默认为NOMAXVALUE,表没有最小值,递增序列最小值为1。

  5:CYCLE表循环,NOCYCLE表示不循环;使用循环,当增至最大值时,循环到最小值;对于递减序列,当减至最小值时,循环至最大;若不循环,当到达极限值后,报错。

  6:CACHE表示使用内存缓存,内存块大小默认为20;NOCACHE表示不使用内存缓冲。

  注意:当重启数据库时,会清空内存信息,内存序列会丢失,再次启动,序列从上次内存中最大的序列号+1 开始存入cache x个,这种情况下会导致序列号不连续。

  7:NEXTVAL返回序列下一个有效值,任何用户都可以引用。

  8:CURRVAL中存放序列当前值,NEXTVAL应在CURRVAL之前指定,二者应同时有效。

 

三:使用序列

  1:调用NEXTVAL将生成序列中的下一个序列号。序列名.NEXTVAL

  2:调用CURRVAL产生序列当前值,若序列还没有通过调用NEXTVAL产生过序列的下一个值,先引用CURRVAL没有意义。序列名.CURRVAL

 

四:将序列作为表的主键的方法

   在向表中插入数据时调用nextval方法
   insert into 表名 values (序列名.nextval,值1,值2,...);

转自:https://www.cnblogs.com/CandiceW/p/10062413.html

  

  

posted on 2019-08-12 11:56  猪莫慌  阅读(2470)  评论(0编辑  收藏  举报

导航