一.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. 第十五节:深入理解async和await的作用及各种适用场景和用法

    一. 同步VS异步 1.   同步 VS 异步 VS 多线程 同步方法:调用时需要等待返回结果,才可以继续往下执行业务 异步方法:调用时无须等待返回结果,可以继续往下执行业务 开启新线程:在主线程之外 ...

  2. [译]Ocelot - Tracing

    原文 Ocelot是使用的Butterfly这个项目来实现这个的. 在ocelot要使用tracing, 首先得安装相应的包: Install-Package Ocelot.Tracing.Butte ...

  3. SQL Server - DISTINCT

    http://www.runoob.com/sql/sql-distinct.html 只选出不同的值,过滤掉重复的值.

  4. [NOI2015]软件包管理器-树链剖分

    #include<bits/stdc++.h> using namespace std; const int maxn = 1e6+5; int n,m; int e,begin[maxn ...

  5. QPS/TPS/并发量/系统吞吐量概念和公式

    1.概念 我们在日常工作中经常会听到QPS/TPS这些名词,也会经常被别人问起说你的系统吞吐量有多大.一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联,单个req ...

  6. 2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算

    2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算 经过第一阶段的学习,同学们已经熟悉了这门语言基本的用法.在一次又一次对着电脑编写并提交代码,进行练习的时候,有没有觉 ...

  7. eclipse 报错问题:java.lang.ClassNotFoundException:

    解决方法:https://www.cnblogs.com/whatlonelytear/articles/5921978.html

  8. VIM编辑常用命令

    1.临时使用获取root权限保存文件 :w !sudo tee % 2.多标签编辑文件 :tabnew file 3.切换标签 :tabm N   (N为第几个标签,从0开始)

  9. 虚拟机Ubuntu16.04无法进入图形界面 The system is running in low-graphics mode

    安装的虚拟机Ubuntu16.04 64位本可以正常使用,在安装了许多软件包(caffe)后不知哪里配置出现问题,出现The system is running in low-graphics mod ...

  10. python安装多版本

    39.107.96.81 root 123123 pyenv#可以实现python多版本控制与切换 pyenv local 3.5.1 ipython#更方便的编写python,可以补全命令彩色显示等 ...