Oracle Sequence创建与使用

一.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;

  

时间: 2024-11-05 22:06:58

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

oracle SEQUENCE 创建, 修改,删除

oracle创建序列化: CREATE SEQUENCE seq_itv_collection            INCREMENT BY 1  -- 每次加几个              START WITH 1399       -- 从1开始计数              NOMAXVALUE        -- 不设置最大值              NOCYCLE               -- 一直累加,不循环              CACHE 10; oracle修改序列

Oracle SEQUENCE 详细说明

ORACLE  SEQUENCE ORACLE没有自增数据类型,如需生成业务无关的主键列或惟一约束列,可以用sequence序列实现. CREATE SEQUENCE语句及参数介绍: 创建序列:需要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREATE SEQUENCE [ schema. ]sequence [ { INCREMENT BY | START WITH } integer | { MAXVALUE integer | NOMAXVALUE

Oracle SEQUENCE 具体说明

ORACLE  SEQUENCE ORACLE没有自增数据类型,如需生成业务无关的主键列或惟一约束列,能够用sequence序列实现. CREATE SEQUENCE语句及參数介绍: 创建序列:须要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREATE SEQUENCE [ schema. ]sequence [ { INCREMENT BY | START WITH } integer | { MAXVALUE integer | NOMAXVALUE

Oracle中创建自增字段(序列sequence)方法

oracle没有ORACLE自增字段这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现. 下面给大家讲个例子: 1.在Oracle中创建一个表: 1.创建一个表 create table t_client (id number(4) primary key, pid number(4) not null, name varchar2(30) not null, client_id varchar2(10), client_level char(3), bank_acc

Oracle Sequence中Cache与NoCache的区别;合适使用

Oracle在创建序列(sequence)时有个参数你可以选择cache或者nocache,下面来讲一下两者的区别: 先来看下创建sequence的语句: create sequence SEQ_ID  minvalue 1  maxvalue 99999999  start with 1  increment by 1  cache n  / nocache  --其中n代表一个整数,默认值为20order; 如果指定CACHE值,Oracle就可以预先在内存里面放置一些Sequence,这样

oracle数据库创建后要做的事情

用conn /as sysdba登录数据库. 一:先新建用户 create user test01 identified by test02(test01为用户名,test02为用户密码) 二:赋予数据库操作的基本权限 grant connect,resource,dba to test01; 三:创建表空间 根据相应的要求,创建相应的表空间. CREATE TABLESPACE EDUTABLES DATAFILE 'D:\app\Administrator\oradata\test\EDUT

【转】oracle sequence

原文链接  http://www.cnblogs.com/hyzhou/archive/2012/04/12/2444158.html ORACLE SEQUENCE用法 在oracle中sequence就是序号,每次取的时候它会自动增加.sequence与表没有关系. 1.Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限. 创建语句如下: 复制代码 CREATE SEQUENCE seqTest INCREMENT BY 1

oracle如何创建用户并赋予权限

本文将从用户创建讲起,特别讲述Oracle授予用户权限的一个实例,希望对大家了解Oracle授予用户权限有所帮助. 这两天在测数据库同步软件的时候,需要在Oracle里创建一个用户名和密码均为SYSDATA的用户,找了找资料,创建成功,现将Oracle中用户的创建和授予命令摘录下来:  1.Linux 下Oracle的启动 以Oracle身份登录 启动lsnrctl start 登录sqplus /nolog 连接数据库connect/assysdba 启动数据库startup 关闭数据库shu

ORACLE Sequence 自增长

Sequence是数据库系统按照一定规则自动增加的数字序列.这个序列一般作为代理主键(因为不会重复),没有其他任何意义. Sequence是数据库系统的特性,有的数据库有Sequence,有的没有.比如Oracle.DB2.PostgreSQL数据库有Sequence,MySQL.SQL Server.Sybase等数据库没有Sequence. 根据我个人理解,Sequence是数据中一个特殊存放等差数列的表,该表受数据库系统控制,任何时候数据库系统都可以根据当前记录数大小加上步长来获取到该表下