oracle数据库中序列的使用非常普遍,尤其是在给表中建立编码用作主键的时候,本文总结下有关oracle数据库中序列的知识。 1、创建序列 CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/MINVALUE n|NOMAXVALUE/NOMINVALUE}] [{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}]; 上面是创建序列的基本语法,注意各个属性之间不用加逗号,下面详细的介绍其中的意义:
(1)increment:表示步长,即每次增长的长度,若省略,则默认为1;若为负值,则表示是以此步长递减。
(2)start with:序列的第一个值,即初始值,默认为1。 (3)maxvalue:序列生成器产生的最大值,选项nomaxvalue为默认值,表示没有最大值限制。此时,对于递增序列,最大值是10的27次方;对于递减序列,最大值-1。 (4)minvalue:序列生成器产生的最小值,选项nominvalue为默认值,表示没有最小值限制。此时,对于递减序列,最小值是-10的26次方;对于递增序列,最小值是1。 (5)cycle和nocycle:表示当序列生成器的值达到限制后是否循环,如果循环,当序列增到最大值时,循环到最小值;当序列递减到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值会发生错误。 (6)cache:定义存放序列的内存块的大小,默认为20。nocache表示不对序列进行内存缓冲,对序列进行内存缓冲,可以改善序列的性能。如果设置了cache,那么oracle就可以预先在内存中放置一些序列,这样存取就会快些;缓存里面的取完后,oracle自动再取一组序列到缓存中。使用cache或许会跳号,比如数据库突然不正常了,缓存中的序列就会丢失,这时候就有重新取序列导致跳号,所以可在创建序列的时候用nocache防止这种情况。
2、使用序列 定义好序列以后,通过currval取得当前序列值,nextval取得下一个值。 3、更改序列 使用alter来修改序列,比如:
- ALTER SEQUENCE test_seq
- INCREMENT BY 20
- MAXVALUE 999999
- NOCACHE NOCYCLE;
复制代码4、删除序列
使用drop来删除序列,比如:
|