`

Oracle中序列到达最大值会产生什么问题?

阅读更多
序列是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;
分享到:
评论

相关推荐

    mysql生成oracle序列

    文档 里面包含了 mysql创建 oracle序列的脚本,数据库表、函数、使用案例 sql和截图 ,自带 根据步长和值长度,到数据最大时返回0;手册说明详细,表名字段都有解释,一看就懂

    查找序列(数组)中的最大值,最小值(例子)

    查找序列(数组)中的最大值,最小值(无论是Int,double......通用例子)本人测试通过!

    oracle序列主键自增长

    当向表中插入数据时,主键值自动加一. 实现方法1: 建立一个最小为1,最大为nomaxvalue的一个序列号会自动循环的序列 create sequence 序列名 increment by 1 start with 1 nomaxvalue nocycle; .......

    oracle迁移mysql自增序列问题

    今天从oracle迁移数据到mysql碰到个需求:原先的主键字段需要改成mysql中的自增字段,而且原先数据的值不能变,以后新插入的值从原先数据最大的值开始自增。 解决办法: 构建环境: mysql> CREATE TABLE test -> ( ...

    比较经典的Oracle入门的例题

    Oracle初学的一些经典题型总结,答案与题目一起,希望入学者拿去参考参考!

    oracle 主键自增 sequence

    以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,如果你设置了最大值那么你可以用cycle 会使seq到最大之后循环....

    MySQL生成Oracle序列参考案例

    文档 里面包含了 mysql创建 oracle序列的脚本,数据库表、函数、使用案例 sql和截图 ,自带 根据步长和值长度,到数据最大时返回0;手册说明详细,表名字段都有解释,一看就懂

    oracle 存储过程使用 sequence

    NULL 博文链接:https://snowelf.iteye.com/blog/575555

    oracle数据库主键自增并且返回主键值

    一、创建序列 1.1、直接在PLSQL中设置 1.2、命令创建 create sequence seq_users ##创建序列...maxvalue 9999999 ##最大值 order ##确保按照请求次序生成整数 【不常用的设置】.只有在使用Real Application Cluster(RA

    oracle设置主键自动增长

     以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,假如你设置了最大值那么你可以用cycle 会使seq到最大之后循环....

    ORACLE9i_优化设计与系统调整

    第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    8.6.1 例子:使用First_value来计算最大值 206 8.6.2 例子:使用Last_value来计算最小值 207 8.7 其他分析函数 207 8.7.1 Nth_value(11gR2) 207 8.7.2 Rank 209 8.7.3 Dense_rank 210 8.7.4 Row_number 211 ...

    PLSQL序列

    PLSQ语句 1.序列 create sequence seq_XXX start with 1 ...选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增Oracle序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     删除环境变量中的PATHT CLASSPATH中包含Oracle的值。  删除“开始”/“程序”中所有Oracle的组和图标。  删除所有与Oracle相关的目录,包括: C:\Program file\Oracle目录。 ORACLE_BASE目录。 C:\Documents ...

    oracle中的ID号实现自增长的方法

    主要介绍了oracle中的ID号如何实现自增长,利用序列产生主键值,需要的朋友可以参考下

    详解ORACLE SEQUENCE用法

    在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。 1、Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。 创建语句如下: CREATE SEQUENCE seqTest INCREMENT...

    Oracle练习题库

    Oracle练习题,尽快成长自我,分析函数,聚合函数,常见函数--创建一个从1开始,默认最大值,每次增长1的序列,要求NOCYCLE,缓存中有30个预先分配好的 序列号

Global site tag (gtag.js) - Google Analytics