Oracle序列sequence用法总结

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来删除序列,比如:

DROP SEQUENCE test_seq;

本文标题:Oracle序列sequence用法总结

本文链接:http://yedward.net/?id=103

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章