Oracle的SEQUENCE 序列

序列
经常在xml文件中,    出现
    https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_6015.htm#SQLRF01314
增:    

需要CREATE SEQUENCE系统权限。

CREATE SEQUENCE sequence_name

[START WITH num]

[INCREMENT BY increment]

[MAXVALUE num|NOMAXVALUE]

[MINVALUE num|NOMINVALUE]

[CYCLE|NOCYCLE]

[CACHE num|NOCACHE]
① START WITH:从某一个整数开始,升序默认值是1,降序默认值是-1。
② INCREMENT BY:增长数。如果是正数则升序生成,如果是负数则降序生成。升序默认值是1,降序默认值是-1。
③ MAXVALUE:指最大值。
④ NOMAXVALUE:这是最大值的默认选项,升序的最大值是:1027,降序默认值是-1。
⑤ MINVALUE:指最小值。
⑥ NOMINVALUE:这是默认值选项,升序默认值是1,降序默认值是-1026。
⑦ CYCLE:表示如果升序达到最大值后,从最小值重新开始;如果是降序序列,达到最小值后,从最大值重新开始。
⑧ NOCYCLE:表示不重新开始,序列升序达到最大值、降序达到最小值后就报错。默认NOCYCLE。
⑨ CACHE:使用CACHE选项时,该序列会根据序列规则预生成一组序列号。保留在内存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统再生成一组新的序列号,并保存在缓存中,这样可以提高生成序列号的效率。Oracle默认会生产20个序列号。
⑩ NOCACHE:不预先在内存中生成序列号。
创建sequence
CREATE SEQUENCE seqTest
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXvalue -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE

删:
DROP SEQUENCE SEQ_NAME;
    
改:
ALTER SEQUENCE 序列名 
  [INCREMENT BY n] 
  [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] 
  [{CYCLE|NOCYCLE}] 
  [{CACHE n|NOCACHE}];
ALTER SEQ_NAME INCREMENT BY -2; 可以是复数。
不能修改序列的初始值
    
查:    
    SELECT SEQUENCENAME.NextVal FROM DUAL;
    SELECT SEQUENCENAME.CurrVal FROM DUAL;

    CurrVal:返回 sequence的当前值 
    NextVal:增加sequence的值,然后返回 增加后sequence值
    
    第一次NEXTVAL返回的是START的值;之后,NEXTVAL会自动+INCREMENT BY值,然后返回加后的值。
    
    在Sql语句中可以使用sequence的地方: 
    - 不包含子查询、snapshot、VIEW的 SELECT 语句 
    - INSERT语句的子查询中 
    - INSERT语句的values中 
    - UPDATE 的 SET中
    
    查询所有序列
    Tips:
    1. 必须以管理员身份登录;
    2. sequence_owner必须为大写,无论用户名是否大写。只识别大写。
    例:
    ·查看当前用户下的所有序列
    SELECT SEQUENCE_OWNER, SEQUENCE_NAME FROM WHERE SEQUENCE_OWNER='PIKAQIU';
    ·查看当前用户的序列总数
    SELECT COUNT(*) FROM DBA_SEQUENCE WHERE SEQUENCE_OWNER='PIKAQIU';

 

此外,后续补充RAC下sequence避免error

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值