文档章节

Oracle sequence值到了最大值的处理

Arice徐新凯
 Arice徐新凯
发布于 2017/08/28 14:29
字数 752
阅读 13
收藏 0

序列是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属性,那么会复位到最小值继续增加依次循环。

© 著作权归作者所有

共有 人打赏支持
Arice徐新凯
粉丝 0
博文 2
码字总数 900
作品 0
程序员
私信 提问
ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍

如果我是C罗 原文 ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍 sequence在ORACLE中应用十分广泛,就是序列号的意思,会自动增加指定变数,如逐次增加1或者2或者其他. 1.创建序列 Create...

橘子红了呐
2017/11/16
0
0
Oracle中序列的一些常用操作

在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREATE SEQ...

zh119893
2013/05/18
116
0
Oracle 10G中关于序列使用详解.

Oracle 10G中关于序列使用详解. 数据库设计的三大范式第一条就是独立的表结构中必须有唯一主键来标识表中数据.在以往微软的SQL Server(duo版本)平台上.手动编码实现表中主键.并设定为自增列是...

猴子
2011/11/10
0
0
Oracle数据库批量foreach涉及union all插入自增长主键实现方案

事件发生的背景同动弹同步,我接到了一个把我的项目从mysql迁移到oracle数据库的噩耗。本来以为这事件麻烦的事儿,但是实际情况比我想的麻烦的多。 顺便总结一下我换库遇到的种种问题: 1、m...

Pig-man
2016/11/26
522
0
Oracle序列使用:建立、删除

在开始讲解Oracle序列使用方法之前,先加一点关于Oracle client sqlplus的使用,就是如果执行多行语句的话一定要加“/”才能表示结束,并执行!本篇文章的主题是通过创建Oracle序列和触发器实...

teacheryang
2012/08/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

eureka多注册中心

eureka分区的深入讲解

miaojiangmin
4分钟前
0
0
RAM SSO功能重磅发布 —— 满足客户使用企业本地账号登录阿里云

阿里云RAM (Resource Access Management)为客户提供身份与访问控制管理服务。使用RAM,可以轻松创建并管理您的用户(比如雇员、企业开发的应用程序),并控制用户对云资源的访问权限。 对云资...

阿里云官方博客
7分钟前
0
0
Mysql 8.0 | #08004Client does not support authentication protocol requested by server

完整报错 #08004Client does not support authentication protocol requested by server; consider upgrading MySQL client 解决方法 Using the old mysql_native_password works:ALTER ......

云迹
9分钟前
0
0
kylin入门到实战

1.概述 kylin是一款开源的分布式数据分析工具,基于hadoop之上的sql查询接口,能支持超大规模的数据分析。响应时间在亚秒级别,其核心是预计算,计算结果存放在hbase中。 2.特性 可扩展超快O...

hblt-j
12分钟前
0
0
vagrant mac 安装和使用

varant 在mac上使用起来非常的方便,具体的下载步骤可以看这里https://segmentfault.com/a/1190000000264347 这里主要是记录一下配置文件 # -*- mode: ruby -*- # vi: set ft=ruby : # All V...

一千零一夜个为什么
12分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部