zoukankan      html  css  js  c++  java
  • SQL------SEQUENCE

    转自:http://blog.csdn.net/gameloft9/article/details/20902805

    一、概述

    sequence是序列号的意思,每次取的时候它会自动增加。sequence与表没有从属关系,与表一样属于用户。 二、主要内容 1、Create Sequence语法 --首先用户要有CREATE SEQUENCE或者CREATE ANY SEQUENCE的权限。 CREATE SEQUENCE seqname [ INCREMENT increment ]     [ MINVALUE minvalue ] [ MAXVALUE maxvalue ]     [ START start ] [ CACHE cache ] [ CYCLE ][order]

     seqname:       序列名  increment:     递增数,例如increment by 1就是递增1;increment by -1就是递减1。  minvalue:      序列最小值  maxvalue:      序列最大值,最大为27个9.  start:         序列从哪个值开始,例如start with 200就是从200开始。  cache:         缓存序列个数,先取一部分序列值存入缓存,可以提高性能。缺点是发生系统故障后可能导致                 序列号不连续。可以设置为nocache保证不会发生序列跳动。默认值是20。  cycle:        循环,到达最大值后,从最小值重新开始生成序列号。可以设置为nocycle表示累加不循环。  order:         保证按顺序申请。默认是noorder。ORDER 和 NOORDER 的区别表现在 并行服务 和独占服务之间 打个比方:双CPU对同一个oracle DB 中的 ABC sequence申请序号时, 这时就有两个请求A和B,假设A请求在前B在后, 现在ABC序列中的值为9. 如果添加了ORDER选项,那么一定是A请求到9, B请求到10.但如果没有添加此选项,则有可能B请求到9, A请求到10.order一般用于时间戳类型,对于主键则用处不大。 例子:      CREATE SEQUENCE seq      minvalue 1        --最小值      INCREMENT BY 1    --递增1      START WITH 1      --从1开始      NOMAXvalue        --无最大值      NOCYCLE           --不循环      CACHE 100;        --缓存100个序列号

    2、使用sequence 定义好sequence后,你就可以用currVal,nextVal取得值。 CurrVal:返回 sequence的当前值 NextVal:返回sequence的下一个值 select seq.currval from dual select seq.nextval from dual   3.在Sql语句中可以使用sequence的地方: (1)不包含子查询、snapshot、VIEW的 SELECT 语句 (2)INSERT语句的子查询中

    (3)INSERT语句的values中 (4)UPDATE 的 SET中 例如: insert into student(id,name) values(seq.Nextval,'jack');

    注意:      第一次NEXTVAL返回的是初始值,随后的NEXTVAL会返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则报如下错误:     ORA-08002 序列currval尚未在会话中定义。

    使用一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你多次执行包含NEXTVAL的一条语句,其值就是不一样的。   3、修改sequence参数   拥有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence再create。   例: alter sequence SEQ maxvalue 9999999; alter sequence SEQ cache 10;   4、Drop Sequence DROP SEQUENCE seq;

  • 相关阅读:
    RE
    【LeetCode】198. House Robber
    【LeetCode】053. Maximum Subarray
    【LeetCode】152. Maximum Product Subarray
    【LeetCode】238.Product of Array Except Self
    【LeetCode】042 Trapping Rain Water
    【LeetCode】011 Container With Most Water
    【LeetCode】004. Median of Two Sorted Arrays
    【LeetCode】454 4Sum II
    【LeetCode】259 3Sum Smaller
  • 原文地址:https://www.cnblogs.com/kennyael/p/9953094.html
Copyright © 2011-2022 走看看