一.Sequence简介

  Sequence是数据库系统按照一定的规则自动增加的数字序列,主要用于生成数据库数据记录。这个序列一般作为代理主键(因为不会重复)。

Sequence是数据中一个特殊存放等差数列的表,该表受数据库系统控制,任何时候数据库系统都可以根据当前记录数大小加上步长来获取到该表下一条记录应该是多少,这个表没有实际意义,常常用来做主键用。Sequence是数据库系统的特性,有的数据库有Sequence,有的没有。比如Oracle、DB2、PostgreSQL数据库有Sequence,MySQL、SQL Server、Sybase等数据库则没有Sequence。

  此处,主要讨论下oracle sequence的创建与使用,其他的大同小异。

二.Sequence创建

  Create Sequence之前要获取CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。

1 -- Create sequence
2 create sequence SEQ_PRODUCT_STANDARD_CHG --Sequence实例名
3 minvalue 1 --最小值,可以设置为0
4 maxvalue 2147483647 --最大值
5 start with 1 --从1开始计数
6 increment by 1 --每次加几个
7 cache 20; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE

  或者可以如下创建均是可以的

1 CREATE SEQUENCE SEQ_PRODUCT_STANDARD_CHG
2 START WITH 1      -- 从1开始计数
3 NOMAXvalue     -- 不设置最大值
4 INCREMENT BY 1      -- 每次加几个
5 NOCYCLE      -- 一直累加,不循环
6 CACHE 10;      --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE

三. Sequence使用

  创建好Sequence后就可以通过currVal与nextVal进行使用。

    currVal:返回 sequence的当前值

    nextVal:  增加sequence的值,然后返回 增加后sequence值

如得到上边创建Sequence值的语句为(其中kingstar为用户,该用户下其实可以省略):

1 select kingstar.SEQ_PRODUCT_STANDARD_CHG.currVal 2 from dual

  在Sql语句中可以使用sequence的地方:

      1. 不包含子查询、snapshot、VIEW的 SELECT 语句
      2. INSERT语句的子查询中        
      3. INSERT语句的values中              
      4. UPDATE 的 SET中

  注:1.CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。

2. 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。

四.Sequence 修改

  拥有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create。

   1 alter sequence kingstar.SEQ_PRODUCT_STANDARD_CHG  maxvalue 9999999;   

1 ALTER SEQUENCE kingstar.SEQ_PRODUCT_STANDARD_CHG
2 INCREMENT BY 10
3 MAXVALUE 10000
4 CYCLE — 到10000后从头开始
5 NOCACHE ;

五. Sequence删除

   1 DROP SEQUENCE kingstar.SEQ_PRODUCT_STANDARD_CHG;

本文转载至:https://www.cnblogs.com/ZiyuanZhu/p/5976580.html

Oracle Sequence创建与使用的更多相关文章

  1. oracle SEQUENCE 创建, 修改,删除

    oracle创建序列化: CREATE SEQUENCE seq_itv_collection            INCREMENT BY 1  -- 每次加几个              STA ...

  2. Oracle SEQUENCE 具体说明

     ORACLE  SEQUENCE     ORACLE没有自增数据类型,如需生成业务无关的主键列或惟一约束列,能够用sequence序列实现. CREATE SEQUENCE语句及參数介绍: 创建序 ...

  3. Oracle序列(Sequence)创建、使用、修改、删除

    Oracle对象课程:序列(Sequence)创建.使用.修改.删除,序列(Sequence)是用来生成连续的整数数据的对象.序列常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成.创建序 ...

  4. Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍

    引用自 :http://www.2cto.com/database/201307/224836.html   Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍 先假设有这么一个表 ...

  5. oracle中创建sequence指定起始值

    oracle中创建sequence指定起始值 DECLARE V_Area_Id NUMBER; BEGIN SELECT MAX(T.Area_Id)+10 INTO V_Area_Id FROM ...

  6. Oracle - java创建Oracle 的触发器

    Oracle - java创建Oracle 的触发器 今天碰到这个问题,遇到点问题,到这来 总结一下解决的办法, 需求,为一个用户当中的表增加一个自动增长列,我还没有学Oracle 的这部分,只是简单 ...

  7. oracle如何创建表的自增ID(通过触发器)

    Oracle中创建表的自增ID(通过触发器),序列的自增ID和触发器的自增ID的区别 1.新增数据(序列) --创建示例表 -- create table Student( stuId ) not n ...

  8. 在oracle中创建自动增长字段

    参考http://www.cnblogs.com/jerrmy/archive/2013/03/13/2958352.html http://www.jb51.net/article/43382.ht ...

  9. Oracle Sequence Cache 参数说明

    转自 http://blog.csdn.net/tianlesoftware/article/details/5995051 之前整理的一篇文章: ORACLE SEQUENCE 介绍 http:// ...

随机推荐

  1. 更改Jenkins的workspace目录

    系统管理→系统设置→主目录(的右边问号下面)→高级(是不是忽略了啊\(^o^)/~)→工作空间根目录 点开后面的问号可以看见3个参数(配置路径需要的): ${JENKINS_HOME} — Jenki ...

  2. [再寄小读者之数学篇](2014-05-27 矩阵的迹与 Jacobian)

    (from MathFlow) 设 $A=(a_{ij})$, 且定义 $$\bex \n_A f(A)=\sex{\cfrac{\p f}{\p a_{ij}}}. \eex$$ 试证: (1) $ ...

  3. 五十一、进程间通信——System V IPC 之进程信号量

    51.1 进程信号量 51.1.1 信号量 本质上就是共享资源的数目,用来控制对共享资源的访问 用于进程间的互斥和同步 每种共享资源对应一个信号量,为了便于大量共享资源的操作引入了信号量集,可对所有信 ...

  4. Linux Socket I/O

    Ref: 一文读懂Socket通信原理 幽默讲解 Linux 的 Socket IO 模型

  5. Centos7 安装 python2.7

    Centos7 安装 python 2.7.15 和 pip  1.先安装 GCC 包,如果没安装 GCC包 就输入以下命令行安装: (*注:以下记得使用 su 权限) yum install gcc ...

  6. C#(在WeBAPI)获取Oracle(在PL/SQL)游标类型的存储过程(用到了RefCursor)

    需求:WebAPI服务端,通过Oracle数据库的存储过程,获取数据. 在PL/SQL 建立存储过程:(先来最简单的,就是把整个表都查出来) create or replace procedure S ...

  7. centos 6 部署Nodejs

    线上环境需要一套nodjs,没话说,那就部署唠. 一.下载编译包.解压.软链 nodjs历史版本连接:https://nodejs.org/zh-cn/download/releases/ cd /u ...

  8. 【原创】运维基础之Docker(2)通过docker部署zookeeper nginx tomcat redis kibana/elasticsearch/logstash mysql kafka mesos/marathon

    通过docker可以从头开始构建集群,也可以将现有集群(配置以及数据)平滑的迁移到docker部署: 1 docker部署zookeeper # usermod -G docker zookeeper ...

  9. 【java】Java相关学习参考链接(持续更新)

    How to do in java,https://howtodoinjava.com/,Java手册,分版本,并且有每个版本的新特性的详细解析. Java World,https://www.jav ...

  10. jquery 第三章

    1.回顾$(document).ready(function(){    })$(function(){    }) ID选择器.类选择器.元素选择器层次选择器:空格(上文下:tr td{})属性过滤 ...