Oracle------第十一章Creating Sequences
第十一章:序列
-
sequence
sequence是Oracle数据库中一种特殊的对象,能够产生连续的整数值,
可以为数据库中多个对象共同使用,主要用于作为主键值。从数据字典表中查询创建的序列:
select sequence_name from user_sequences; select * from user_sequences where sequence_name = 's1';
-
创建sequence
CREATE SEQUENCE name [INCREMENT BY n] 步长 [START WITH n] 起始值 [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}]
注意:
a) 各可选项位置不先后次序
b) 当increment by n为正数时, 默认maxvalue为: 1E+27 , 默认minvalue为: 1
当increment by n为负数时, 默认maxvalue为: -1 , 默认minvalue为: -1E+26
increment by必须为非零整数,
c) 加不加NOMAXVALUE效果一样,这本身是默认值
d) CACHE n可以每次预产生十五个,二十个,放到内存里,提高性能。
不写默认CACHE 20个
e) cycle用于循环,到了最大数后循环(不建议使用) -
使用sequence
通过伪列nextval和currval进行调用
1)nextval: 每次sequence的下一个值
2)currval: 获得sequence的当前值
注:在sequence对象第一次没有通过nextval调用之前,不能通过currval调用,否则会产生错误。select sequenceName.nextval from dual; select sequenceName.currval from dual;
序列和表的联系:
insert into tableName(id,name) values(sequenceName.nextval,'tom');
-
修改sequence
ALTER SEQUENCE sequenceName [INCREMENT BY n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}]
注: sequence不能修改起始值
修改步长为-2alter sequence s_stu_id increment by -2;
-
删除序列
drop sequence sequenceName