oracle:序列操作,sequence

序列(sequence)是一种数据项,生成一个整数序列。生成的整数通常可以用来填充数字类型的主键列。

创建序列

CREATE SEQUENCE sequence_name
[START WITH start_num]
[INCREMENT BY increment_num]
[{MAXVALUE maximum_num |NOMAXVALUE}]
[{MINVLAUE  minimum_num |NOMINVALUE}]
[{CYCLE |NOCYCLE}]
[{CACHE cache_num |NOCACHE}]
[{ORDER | NOORDER}];

 

START WITH start_num :指定冲哪个整数开始,默认为1

INCREMENT BY increment_num :指定每次增加的量,默认为1

NOMINVALUE 指定升序序列最小为1,降序序列最大为-10^26,为默认值

NOMAXVALUE 指定升序序列最大为10^27,降序序列最大为-1,为默认值

CACHE cache_num指定要保留在内存中整数的个数。默认要缓存的整数位20葛。至少为2。最多为:CELL(maximum_num-minimum_num)/ABS(increment_num)

ORDER 确保按照请求次序生成整数。NOORDER为默认值。

CREATE SEQUENCE seq_name;

CREATE SEQUENCE seq_name
START WITH 10 INCREMENT BY 5
MINVALUE 10 MAXVALUE 20
CYCLE CACHE 2 ORDER;

 

获得有关序列的信息

SELECT *
FROM user_sequences;

 

使用序列

一个序列有两个‘伪列’,为curval 和 nextval.

在检索序列的当前值前,必须通过检查序列的下一个值对序列初始化。

SELECT seq_name.nextval FROM dual;

 

使用序列填充主键

INSERT INTO table_name(id) VALUES (seq_name.nextval);

 

创建seq_name 是定义为 nocache ,这样id 就会连续了。

修改序列

ALTER SEQUENCE seq_name
INCREMENT BY 2;

 

删除序列

DROP SEQUENCE seq_name;

 

 

 

 

 

 

 

 

 

posted @ 2012-04-15 14:56  A_zhu  阅读(3331)  评论(0编辑  收藏  举报