oracle最大值填充,Oracle sequence值到了最大值的处理

序列是oracle提供的用于生成一系列唯一数字的数据库对象,序列会自动生成顺序递增的序列号,以实现自动提供唯一的主键值,系列可以在多个用户并发环境中使用,并且可以为所有用户生成不重复的顺序数字,而不需要任何额外的I/O开销。

创建序列

序列和视图一样,并不占用实际的存储空间,只是在数据字典中保存他的定义信息。当创建序列时必须拥有create sequence系统权限。

语法格式:

create  sequence seq_name

[start  with  n]

[minvalue  n  |  nomainvalue]

[maxvalue  n |  nomaxvalue]

[cache  n  |   ncache]

[cycle   |   nocycle]

[order   |  noorder];

含义:

seq_name:创建的序列名。

Increment :该子句是可选的,表示序列的增量。一个正数将生成一个递增的序列,一个负数将生成一个递减的序列。默认值为1

minvalue:可选的子句,决定序列生成的最小值。

maxvalue:可选的子句,决定序列生成的最大值。

start: 可选的子句,制定序列的开始位置。默认情况下,递增序列的起始值为minvalue,递减序列的起始值为maxvalue。

cache:该选项决定是否产生序列号预分配,并存储在内存中。

cycle: 可选的关键字,当序列到达最大值(maxvalue)或者最小值(minvalue)时可复位并继续下去。如果达到极限。生成的下一个数据将分别是最小值或者最大值。如果使用NO CYCLE 选项,那么在序列达到最大值或最小值之后,如果再试图获取下一个值将返回一个错误。

order:  该选项可以保证生成的序列值是按顺序产生的。例如:order可以保证第一个请求得到的数为1,第二个请求得到的数为2,以此类推而NOODDER只保证序列的值唯一性,不保证产生列值的顺序。

例子:

create  sequence   seq_dept

maxvalue  99--序列产生产生的最大值。

start  with  50 --从50开始

increment  by  10--每次跳10个序列号递增

cache  10;--在系统中预分配10个。将来生成的序列号为50,60,70,80,90

注意:

使用序列时,需要用到序列的两个伪列NexVal与CurrVal。其中nextval将返回序列生成的下一个序列号,而伪列currval则会返回序列的当前序列号。需要注意,首次引用序列时,必须使用伪列nextval。

例如:insert  into  scott.dept(deptno,dname,loc)  values(seq_dept.nextval,'development',default);

执行以上句子后,会为dept表插入一条数据,并且deptno列会使用序deptno_seq生成的序列号。另外,如果用户要确定当前序列号,可以使用伪列currval。

例如:    select  seq_dept   from  dual;

当sequence的值到达了最大值之后,若选择了cycle属性,那么会复位到最小值继续增加依次循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值