ORACLE ---序列

ORACLE —序列

定义:

序列是ORACLE提供的一组能够自动增长的序号。常常用来生成每条数据的唯一标识。

权限要求:CREATE SEQUENCE
创建语法:

CREATE SEQUENCE 序列名称 SEQ_NAME
START WITH N 
--初始序号 递增:默认MINVALUE  递减:默认MAXVALUE
INCREMENT BY N 
--增长幅度  N为正 递增  N为负  递减
MINVALUE N | NOMINVALUE 
--最小值 N | 无最小值设置
MAXVALUE N | NOMAXVALUE 
--最大值 N | 无最大值设置
CACHE N | NOCACHE 
--缓存 N个序号 | 无缓存    默认缓存20个序号  --尽量设置大一点的值
CYCLE | NOCYCLE ;--循环 达到极值时是否从新循环生成序号

tips:

循环序列在创建时,缓存值限定在:
CEIL((MAXVALUE-MINVALUE)/ABS(INCREMENT))以内,
非循环序列缓存值设定没有限定,但实际缓存受所剩序列号影响。

举例;

CREATE SEQUENCE SEQ_A
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 20
CACHE 10
NOCYCLE;

当前值CURRVAL
下一个值NEXTVAL
注意:

1)第一次使用CURRVAL必须先使用一次NEXTVAL
2)第一次使用NEXTVAL得到的是序列中的起始值

修改
语法:

ALTER SEQUENCE SEQ_NAME CYCLE; --修改循环
ALTER SEQUENCE SEQ_NAME INCREMENT BY 3; --修改涨幅

注意:

无法直接调整初始值,只能删除后重建,或先设置一个新的涨幅,通过nextval执行到目标序号后再调回旧的涨幅。

删除
语法:

DROP SEQUENCE SEQ_NAME;

tips:

1.CACHE值小于等于CYCLE值(指一次循环能够生成的序号个数)
2.未设置起始值时,默认递增序列从最小值开始,递减序列从最大值开始
3.涨幅必须是非零整数
4.若要指定起始值,起始值必须在最小值与最大值之间
5.若未指定最大值和最小值 递增时:最小值是1 最大值是10^27 递减时:最小值是-10^27 最大值是 -1
6.ABS(INCREMNET)<=ABS(MAXVALUE-MINVALUE)
7.缓存值尽量设置大一些

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值