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;