加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle数据库Sequence创建与使用

发布时间:2020-12-12 14:51:57 所属栏目:百科 来源:网络整理
导读:在Oracle中sequence就是序号,每次提取完都会自动增加,步幅固定 , 它与表没有直接关系 ! 首先查询当前数据库中的sequence 查询当前用户的: select * from user_sequences 查询所有用户的: select * from all_sequences 开始创建sequence: 创建 sequenc

在Oracle中sequence就是序号,每次提取完都会自动增加,步幅固定它与表没有直接关系


首先查询当前数据库中的sequence

查询当前用户的:select*fromuser_sequences

查询所有用户的:select*fromall_sequences

开始创建sequence:

创建sequence语句:

CREATESEQUENCE seq_name --seq_name为计数器的名字,自定;
INCREMENT
BY1 --每次加幅度:1,2,3,....;
STARTWITH1 --起始序号,以实际生产情况而定;
NOMAXvalue --不设置最大值,或设定最大值: maxvalue 9999;
NOCYCLE --一直累加,不循环; 或循环使用 cycle ;
CACHE10 --设置缓存序列个数,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE

修改sequence:

Alter sequence 可以修改sequence(除起始值)步幅、最大/最小值、是否循环、缓存个数 这些参数;
例:Alter Sequence seq_name
Increment By 2
Maxvalue 9999

使用sequence:

sequence创建完成后,就可以使用sequence的两个参数 currval、nextval;

currval查询sequence的当前值:select seq_name.currval from dual;

nextval查询sequence下一个值:select seq_name.nextval from dual;


删除sequence:

drop sequence seq_name;



1、currval是取当前值,所以一个新的计数器sequence必须先使用nextval后才可以使用currval否则会报错;
2、nextval是取下一个值,但第一次使用时取的是初始值,之后正常取下一个,且如果一个语句(不同的子句)里面有多个nextval,它们的取值可能是不同的;
3、如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,cache里面的取完后,oracle自动再取一组到cache。
优点:存取的快些,尤其是并发访问时。
缺点:使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在创建的时候用nocache防止这种情况

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读