ORACLE SEQUENCE 介绍

在oracle在sequence序列号被称为,每一次,它会采取增加自己主动,通过序列号需要排序的地方一般使用。 
1、Create Sequence 
你首先必须CREATE SEQUENCE或CREATE ANY SEQUENCE权限。 
CREATE SEQUENCE emp_sequence 
    INCREMENT BY 1  -- 每次加几个 
    START WITH 1    -- 从1開始计数 
    NOMAXVALUE      -- 不设置最大值 
    NOCYCLE         -- 一直累加,不循环 
    CACHE 10;

一旦定义了emp_sequence,你就能够用CURRVAL。NEXTVAL 
 CURRVAL=返回 sequence的当前值 
 NEXTVAL=添加sequence的值。然后返回 sequence 值 
比方: 
  emp_sequence.CURRVAL 
  emp_sequence.NEXTVAL

能够使用sequence的地方: 
- 不包括子查询、snapshot、VIEW的 SELECT 语句 
- INSERT语句的子查询中 
- NSERT语句的VALUES中 
- UPDATE 的 SET中

能够看例如以下样例: 
INSERT INTO emp VALUES  
(empseq.nextval, ‘LEWIS‘, ‘CLERK‘,7902, SYSDATE, 1200, NULL, 20);

SELECT empseq.currval     FROM DUAL;

可是要注意的是: 
- 第一次NEXTVAL返回的是初始值。随后的NEXTVAL会自己主动添加你定义的INCREMENT BY值,然后返回添加后的值。CURRVAL 总是返回当前SEQUENCE的值,可是在第一次NEXTVAL初始化之后才干使用CURRVAL,否则会出错。一次NEXTVAL会添加一次SEQUENCE的值,所以假设你在同一个语句里面使用多个NEXTVAL。其值就是不一样的。

明确?

- 假设指定CACHE值。ORACLE就能够预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自己主动再取一组到cache。 使用cache也许会跳号。 比方数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以能够在create sequence的时候用nocache防止这样的情况。

2、Alter Sequence 
你或者是该sequence的owner。或者有ALTER ANY SEQUENCE 权限才干修改sequence. 能够alter除start至以外的全部sequence參数.假设想要改变start值。必须 drop  sequence 再 re-create . 
Alter sequence 的样例 
ALTER SEQUENCE emp_sequence 
    INCREMENT BY 10 
    MAXVALUE 10000 
    CYCLE    -- 到10000后从头開始 
    NOCACHE ;

影环Sequence初始化参数: 
SEQUENCE_CACHE_ENTRIES =设置相同的时间可以是cache的sequence号码。

可以很easy的Drop Sequence 
DROP SEQUENCE order_seq;

时间: 2024-08-08 09:37:27

ORACLE SEQUENCE 介绍的相关文章

ORACLE Sequence 自增长

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

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的流水号生成规则

流水号在各种系统中随处可见,一般都是使用自增.年月日时分秒+自增.UUID等,要么纯数字,要么纯字母,这种流水号缺乏一定的辨识度. 下面为大家介绍一种具有辨识度的流水号的生成方式:领域或者应用的标识 + 表名的英文缩写(单词的第一个字母) + 年月日(或者年月日时分秒) + Oracle Sequence自增. 代码示例: package com.pab.bloan.order.service; /** * Created by */ public interface SequenceGener

【体系结构】Oracle参数介绍

[体系结构]Oracle参数介绍 1  BLOG文档结构图     2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① Oracle中的各种参数介绍及其查询方法 ② Oracle中V$PARAMETER及V$PARAMETER2的区别 ③ 隐含参数的查询.重置.清除 ④ 会话参数和实例参数的查询 ⑤ 静态参数和动态参数.延迟参数 ⑥ V$PARAMETER视图的每列含义(重点) Tips: ①

【转】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 SEQUENCE 创建, 修改,删除

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

Oracle 后台进程介绍

一 进程分类: 1.服务器进程(server process): 根据客户请求完成工作.如接收和处理应用发送的SQL语句 2.后台进程(background process): 随数据库而启动,用于完成各种维护任务.如将块写到磁盘(DBWn). 维护在线重做日志(LGWR).清理异常终止的进程等. 3.从属进程(slave process):类似于后台进程,不过它们要代表后台进程或服务器进程完成一些额外工作. 二 主要讲一下后台进程: 来浏览一下主要进程: SQL> select paddr,

Oracle Dataguard 介绍

Oracle Dataguard 介绍 一.  DataGuard的基本原理 当某次事务处理对生产数据库中的数据作出更改时,Oracle数据库将在一个联机重做日志文件中记录此次更改.在DataGuard中可以配置写日志的这个过程,除了把日志记录到本地的联机日志文件和归档日志文件中,还可以通过网络,把日志信息发送到远程的从(standby)数据库服务器上.这个备用日志文件写入过程可以是实时.同步的,以实现零数据丢失(最大保护模式maximum protection):也可以是异步的,以减少对网络带