Oracle自增序列
发布时间
阅读量:
阅读量
简介
什么是序列:
序列是一数据库对象,利用它可生成唯一的整数。一般使用序列自动地生成主码值。一个序列的值是由特别的Oracle程序自动生成,因而序列避免了在运用层实现序列而引起的性能瓶颈。
AI写代码
SQL如下(示例):
CREATE sequence seq_tableName
increment BY 1
START WITH 1
MAXVALUE 99999999
minvalue 1
cycle
nocache;
AI写代码
参数说明:
increment by:指定序列之间的间隔,该值可为(正或负)的整数,不可为0,序列为升序,忽略该值,缺省值为1
start with:指定生成的第一个序列号,升序时序列从比最小值大的开始,缺省值为序列最小值.降序时:序列可由最大值小的值开始,缺省值为序列的最大值.
maxvalue:指定序列可生成的最大值
minvalue:指定序列可生成得最小值
cycle,nocycle:表序列生成器达到限制值后是否循环.cycle循环,当递增到最大值时,循环到最小值;对于递减序列达到最小值,循环到最大值;nocycle不循环:达到限制值后,继续会发生错误.
cache,nocache:是否缓冲,cache:定义存放序列的内存的大小,默认为20..对序列进行内存缓冲改善序列的性能.
AI写代码
SQL例句
创建测试表-----
create table test(
id NUMBER(20) not null,
name VARCHAR2(30)
)
创建序列-----
CREATE sequence seq_test
increment BY 1
START WITH 1
MAXVALUE 99999999
minvalue 1
cycle
nocache;
获取序列的自增id--(nextval:每次获取的不同的sequence值,根据increment增量,序列增加
currval:获得当前指向的sequence值,只执行currval,不会因执行次数而改变)
select seq_test.nextval from dual;
select seq_test.currval from dual;
删除序列----
drop sequence seq_test;
更改序列----
alter sequence seq_test increment BY 2 MAXVALUE 888888;
调用序列插入----
inset into test(id,name) values(seq_test.nextval,'姓名');
查询当前用户的所有序列----
select SEQUENCE_OWNER,SEQUENCE_NAME from dba_sequences where sequence_owner='用户名';
AI写代码
总结
提示:这里对文章进行总结:
全部评论 (0)
还没有任何评论哟~
