ORACLE 序列sequence小结

创建序列语法:  需要获取相应的权限

create sequence NAME 

[ { INCREMENT BY | START WITH } integer          ----初始值和递增间隔

| { MAXVALUE integer | NOMAXVALUE }               ----上界或无上界

| { MINVALUE integer | NOMINVALUE }                 ----下界或无下界

| { CYCLE | NOCYCLE }                                       ----是否循环

| { CACHE integer | NOCACHE }                            ----是否缓存

| {ORDER | NOORDER}                                       ----是否排序

CACHE 代表是否在内存中预分配相应大小的缓存,以方便快速访问。注意 CACHE 缓存的值个数<循环体值个数 。

若系统死机或突然断电容易出现跳号现象,在创建计数器后,在内存缓存X个值,当系统崩溃后,内存中的值丢失,然而文件中任然记录了上次已经读取的值,从而造成跳号。

CYCLE 指定循环序列,超过上界或下界后,从下界或上界重新开始。

INCREMENT by 指定递增大小,可以为正或为负。

ORDER 保证序列号是因为有请求才生成的,并且按照请求的顺序生成。


使用序列的方式:

NEXTVAL 获取下一个序列值。

CURRVAL 获取最后一次NEXTVAL的序列值。

注意:初始化时,即第一次获取序列值时要使用NEXTVAL获取第一个序列值。否则会报错。


序列修改和删除语法:

ALTER SEQUENCE NAME

{ INCREMENT BY integer

| { MAXVALUE integer | NOMAXVALUE }            

| { MINVALUE integer | NOMINVALUE }                

| { CYCLE | NOCYCLE }                                   

| { CACHE integer | NOCACHE }                       

| {ORDER | NOORDER}

} ;

DROP SEQUENCE NAME;

若要使序列start with 的值不同,则只能先删除后创建。

当使用NEXTVAL初始化时,若修改increment by, 则会产生跳号。如图:初始化应该为100,但是结果为130。

执行修改语句前:

执行修改语句后:


应用场景:

可以用在select、update、insert中。

variable seqid number

insert into t3 values(seq_tl.nextval) returning ncol into :seqid;  

select * from t3 where ncol=:seqid;

返回插入行的序列值并显示插入信息。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值