`
jiujiubuzui
  • 浏览: 73285 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[Oracle] Sequence简单介绍

 
阅读更多

Oracle中提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方.下面就主要介绍一下关于sequence对象的生成,修改,删除等常用的操作:

1. 生成
Sequence
首先用户要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限.然后使用下面命令生成sequence对象:

CREATE  SEQUENCE emp_sequence 
INCREMENT 
BY   1    --  每次加几个 

START  WITH   1     --  从1开始计数 
NOMAXVALUE     --  不设置最大值 
NOCYCLE      --  一直累加,不循环 
CACHE  10

[说明]
如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。

一旦定义了emp_sequence,你就可以用CURRVALNEXTVAL 来使用
sequence:

sequence.CURRVAL    -- 返回 sequence的当前值
sequence.NEXTVAL    -- 增加sequence的值,然后返回 sequence 值

[说明]
第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。

2.修改 Sequence 
用户或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.
如果想要改变start值,必须 drop sequence 再 re-create.
命令格式如下:

ALTER  SEQUENCE emp_sequence 
  INCREMENT 
BY   10
 
  MAXVALUE 
10000
 
  CYCLE   
--  到10000后从头开始 

  NOCACHE ; 


3.  删除 Sequence

DROP  SEQUENCE order_seq; 
分享到:
评论

相关推荐

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

    Oracle 创建自增字段方法-ORACLE SEQUENCE 的简单介绍 Oracle SEQUENCE 是一种特殊的数据库对象,用于生成一系列唯一的数值,通常用于主键或其他需要唯一标识的字段。下面将详细介绍 Oracle 创建自增字段方法-...

    Oracle sequence 重置(失效恢复)

    下面将详细介绍如何通过SQL脚本来重置Sequence,使其恢复正常功能。 ### SQL脚本实现 首先,我们定义了一个函数`func_getseq`,该函数接受一个表名作为参数,并返回该表主键的最大值。然后,我们使用一个PL/SQL块...

    ORACLE SEQUENCE的简单介绍

    ### ORACLE SEQUENCE 的详细介绍与应用 #### 一、概述 在数据库开发和管理中,自动编号是一项常用的功能。在 SQL Server 中,我们可以通过自增字段来实现这一功能。而在 Oracle 数据库中,则使用了一个名为 **...

    Sequence简单介绍.pdf

    ### Sequence简单介绍 #### 序列(Sequence)概念解析及应用 序列(Sequence)是一种用于生成一系列数值的数据对象,常用于数据库系统中为主键提供自动递增的功能。本篇文章主要聚焦于Oracle数据库与SQL Server...

    Oracle创建自增字段–ORACLE SEQUENCE的简单使用介绍

    先假设有这么一个表: 代码... 在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREAT

    oracle_sequence.rar_oracle

    同义词(Synonym)在Oracle中是一种数据库对象的别名,可以为序列创建同义词,使得在不同的模式或者远程数据库之间共享序列变得简单。例如: ```sql CREATE PUBLIC SYNONYM SEQ_PUBLIC FOR SCHEMA_NAME.SEQ_TEST; ``...

    oracle 存储过程使用 sequence

    以下是一个简单的例子,展示了如何在存储过程中使用Sequence生成用户ID: ```plsql CREATE OR REPLACE PROCEDURE INSERT_USER ( p_username IN VARCHAR2, p_email IN VARCHAR2, p_user_id OUT NUMBER) AS BEGIN ...

    sequence-generator:比oracle sequence更加强大的序列生成器,支持分布式环境,配合MHA可完美做到高可用,与spring无缝集成,使用非常简单可靠

    sequence-generator简介类似于oracle的sequence,但更加强大支持分布式环境下sequence的生成使用乐观锁和AtomicLong确保sequence的唯一性使用及其简单db scriptCREATE TABLE sequence_database.sequence ( name ...

    oracle sequence语句重置方介绍

    以下将详细介绍两种重置Oracle Sequence的方法。 方法一: ```sql DECLARE n NUMBER(10); tsql VARCHAR2(100); p_seqName varchar2(20); BEGIN p_seqName := 'SEQ_RUN_ID'; EXECUTE IMMEDIATE 'SELECT ' ...

    Oracle创建自增字段--ORACLE SEQUENCE的简单使用介绍

    本篇文章将详细介绍Oracle如何创建、使用、修改以及删除自增字段所用到的SEQUENCE。 首先,创建一个Oracle序列(SEQUENCE)可以使用`CREATE SEQUENCE`语句。例如,创建名为`S_S_DEPART`的序列: ```sql CREATE ...

    sqlserver实现oracle的sequence方法

    在SQL Server中,为了模拟Oracle的Sequence功能,我们需要利用数据库中的特定机制来生成唯一的序列号。Oracle的Sequence是一种对象,可以自动地返回一个唯一的整数序列,通常用于生成主键值。而在SQL Server中,我们...

    oracle中如何实现ID自增

    ### Oracle Sequence 的详细介绍 #### 1. 创建序列(Create Sequence) 在创建序列时,除了上面提到的基本选项外,还有一些其他选项可以帮助更好地管理序列。 **示例命令:** ```sql CREATE SEQUENCE emp_...

    Oracle数据库基础教程:入门其实很简单

    - 开发工具:常用的Oracle开发工具介绍。 2. **Oracle+Hibernate应用实例**: - Hibernate简介:了解Hibernate框架的基本概念。 - Oracle与Hibernate集成:如何将Oracle数据库与Hibernate框架结合使用。 - 实例...

    mysql生成oracle序列

    在数据库领域中,不同数据库管理系统(DBMS)之间存在显著差异,比如Oracle与MySQL在处理序列(sequence)的方式上就有本质的不同。Oracle提供了内置的支持来管理自动递增的数字序列,而MySQL并没有原生支持序列这一特性...

    oracle odi 入门

    2. 完整的简单例子:这部分内容通过一系列步骤介绍了创建一个简单的ODI集成项目,从环境准备、资料库创建、物理和逻辑体系结构搭建,到创建项目、模型、接口、包、方案,并最终运行接口和监控会话状态。 3. 最常用...

    在hibernate中实现oracle的自动增长

    在Oracle中创建一个序列(sequence)非常简单,只需要执行一条SQL语句即可。例如,为`DEPARTMENT`表创建一个名为`DEPARTMENT_ID_SEQ`的序列,其最小值设为10000,最大值设为极大的数字,增量为1,并且不循环: ```sql...

    超详细Oracle教程

    - **简单子查询**:介绍单行子查询和多行子查询的用法。 - **嵌套子查询**:探讨如何在一个查询中嵌套另一个查询,以及其在实际应用中的灵活性。 - **WITH子句**:讲解WITH子句在复杂查询中的作用,以及如何使用它...

    Oracle数据库对象管理及备份与恢复.pdf

    Oracle中可以创建简单视图、复杂视图、连接视图等。视图的管理包括创建(CREATE VIEW)、修改(ALTER VIEW)、重新编译(RECOMPILE)、和删除(DROP VIEW)视图定义。管理视图有利于简化复杂的SQL操作,增强数据安全...

Global site tag (gtag.js) - Google Analytics