oracle序列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了oracle序列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1500字,纯文字阅读大概需要3分钟。
内容图文
创建序列
create sequence mysequence
increment by 1
start with 1 -- oracle 10g好像 nextval取到的第一个数是2,11g就没有这个问题
minvalue 1
maxvalue 99999999999
cycle
nocache;
得到序列的语句
select * from user_sequences where sequence_name = upper(‘mysequence‘); -- sequence_name的值必须是大写的,哪怕创建的时候是小写的
删除序列
drop sequence mysequence;
获取序列的当前值,不递增
select mysequence.currval from dual; -- 注currval的值是由nextval定义的,即至少执行一次nextval才能执行currval的值
获取序列的当前值,递增,即把当前序列+increment后输出
select mysequence.nextval from dual;
修改序列的值
- 1.删除原来的序列,重新创建序列,通过修改start with的值
-
2.通过修改increment的值,修改当前的值,如下,把当前值改为100
alter sequence mysequence increment by 98; -- 修改序列的增加值,这里的98好像不能通过select 100-2 from dual的方式获取,好奇怪 select mysequence.nextval from dual; alter sequence mysequence increment by 1;
-
3.通过存储过程进行循环,存储过程还有待练习(特别重要)
创建序列语法
create sequence [序列的名称]
increment by [n] -- n的值可以为正也可以为负,但是不能为0 ,省略该值时,默认为1
start with [n] -- 指定生成的第一个序列值,升序时,缺省值为最小值,降序时,缺省值为最大值
[minvalue n] | [nominvalue] -- 创建序列的最大值
[maxvalue n] | [nomaxvalue] -- 设定一个序列的最下值,不能小于初始值
[cycle] | [nocycle] --判断是否循环,循环,到达最大值时变为初始值
[cache n] | [nocache] --判断是否存在缓存,当需要的序列是连续的时候,一般不设置缓存
[order desc|asc] | [noorder] --排序 缺省值为升序
修改序列
alert sequence [序列的名称] [修改的属性,跟创建序列是一样的]
注
-
nominvalue为升序指定最小值为1 ,为降序指定最小值-1026
-
nomaxvalue 为升序指定最大值1027,为降序指定最大值-1
-
使用cache可能会出现数字不连续的原因,数据库把cache n个数组放入内存中,每次使用nextval,从内存中取数字,但是如果突然关机,会从之前内存最大值的下一个开始取,即使没用过的数字也不会被取到
-
序列是独立于回滚操作的,即sql执行不成功,但是nextvale的值不会变
-
序列只保证获取到的数的唯一的(nocycle的情况下),但是不保证序列的值是连续的,如上面两个原因,都会造成序列不连续
原文:http://www.cnblogs.com/jinxiuze/p/7896203.html
内容总结
以上是互联网集市为您收集整理的oracle序列全部内容,希望文章能够帮你解决oracle序列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。