`
libran
  • 浏览: 193302 次
  • 性别: Icon_minigender_1
  • 来自: 天津
文章分类
社区版块
存档分类
最新评论

Oracle中SEQUENCES的使用

阅读更多

Oracle中SEQUENCES的使用

Oracle提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方.

下面介绍一下关于sequence 的生成,修改,删除等常用的操作:


1.
创建 Sequence

使用如下命令新建sequence(用户需要有CREATE SEQUENCE 或者CREATE ANY SEQUENCE权限):

CREATE  SEQUENCE test_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 选项。


2.
使用 sequence:

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

[注意]
第一次NEXTVAL返回的是初始值;
随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。

CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。
一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。


sequence
存储在数据字典中,存储于user_sequences
 
LAST_NUMBER
为最终序列号,也就是sequence游标当前所在的位置。

//get sequence last_number

SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME=TEST_SEQNAME

// NEXTVAL 使游标指向下一位(增一或减一)

SELECT SEQNAME.NEXTVAL FROM USER_SEQUENCES 得到下一位游标的值


3.
修改 Sequence

用户必须拥有ALTER ANY SEQUENCE 权限才能修改sequence. 可以alterstart至以外的所有sequence参数.
如果想要改变start值,必须 drop sequence re-create.

命令格式如下:

ALTER  SEQUENCE test_sequence
 INCREMENT  BY   10 
 MAXVALUE  10000 
 CYCLE
      --  10000后从头开始 
 NOCACHE ; 

4.  删除 Sequence
 DROP  SEQUENCE order_seq; 

 

引用自校长的博客
http://blog.yesky.com/blog/eric1945/archive/2007/06/29/1685318.aspx?Pending=true#Post

分享到:
评论
1 楼 yly936 2011-10-17  
补充一点关于 SEQUENCE  的东西,莫介意
查看 SEQUENCE 的结构:
SELECT dbms_metadata.get_ddl('SEQUENCE',UPPER('MYSEQUENCE')) FROM DUAL;

相关推荐

    Oracle数据库精讲之数据库管理_ Oracle数据库管理视频

    一、课程用到的软件:oracle 11g 二、课程目标: 1. 为有意从事oracle dba工作人员提供学习...第十六讲:oracle sequences管理 第十七讲:oracle 触发器管理 第十八讲:oracle 用户管理 第十九讲:oracle 安装部署管理

    Oracle中主键自增实例

    1. 使用序列(Sequences): Oracle序列是一种数据库对象,可以生成唯一的整数序列。创建序列后,可以在插入新记录时引用它来获取下一个可用的序列值。例如,创建一个名为`SEQ_PRIMARY_KEY`的序列: ```sql CREATE ...

    最完整的Toad For Oracle使用手册

    ### Toad for Oracle 使用手册关键知识点总结 #### 一、简介与新特性 - **Toad for Oracle**:是一款强大的数据库开发与管理工具,适用于Oracle数据库环境。 - **新版本特性**:概述了Toad for Oracle最新版本的...

    oracle脚本-oracle常用表及数据

    4. **序列**:Oracle数据库中的序列(Sequences)是一种自动增长的数字序列,常用于生成唯一标识符,如主键。序列可以确保在多用户环境下数据的一致性和完整性。例如,可以创建一个名为emp_id_seq的序列,为新插入的...

    oracle数据库字段值自动加1

    Oracle 数据库中,字段值自动加 1 是一个常见的需求,特别是在数据插入时需要自动生成唯一标识符的情况下。下面将详细介绍如何实现 Oracle 数据库字段值自动加 1。 首先,需要创建一个表来存储数据。在本示例中,...

    oracle官方文档-Oracle Database Concepts

    3. **数据库对象**:Oracle数据库包含多种对象,如表(Tables)、视图(Views)、索引(Indexes)、序列(Sequences)、存储过程(Stored Procedures)和触发器(Triggers)。它们是数据库应用的基础,满足不同的...

    Oracle-系统表大全.docx

    在 Oracle 中,可以使用以下语句来查询用户信息: ```sql select username from dba_users; ``` 此语句将返回所有用户的用户名信息。 表空间管理 表空间是 Oracle 数据库中的逻辑存储单元,用于存储数据库对象,...

    Sequences用法

    在Oracle数据库中,序列(Sequences)是一种特殊的数据类型,用于生成唯一的整数序列,通常用于创建自动递增的主键。序列对于大型系统来说非常重要,因为它们可以确保数据的一致性和完整性。以下是对Oracle序列的...

    ORACLE中数据字典的使用方法

    ### ORACLE中数据字典的使用方法 #### 数据字典概述 数据字典(Data Dictionary)在Oracle数据库中扮演着非常关键的角色。它是一个存储数据库和应用程序元数据的目录,这些元数据包括了数据库对象(如表、视图、...

    查看ORACLE 数据库及表信息.docx

    使用以下SQL语句可以查看ORACLE数据库中的所有序列信息: SELECT * FROM user_sequences; 这条语句将显示数据库中所有的序列信息,包括序列的名称、当前值、最大值、最小值等信息。 2. 查看ORACLE数据库中的所有...

    oracle 创建id主键序列 脚本

    下面将详细介绍如何在Oracle中创建主键序列的脚本以及如何使用它们。 一、创建序列脚本 在Oracle中,创建一个序列可以使用`CREATE SEQUENCE`语句。下面是一个基本的创建序列的脚本示例: ```sql CREATE SEQUENCE ...

    Oracle 常用数据字典

    Oracle 数据字典是 Oracle 数据库中的一种重要组件,它提供了关于数据库对象的元数据信息。下面将对 Oracle 数据字典进行详细的介绍。 Oracle 数据字典是一种特殊的数据库表,存储了关于数据库对象的信息,如表、...

    ORACLE常用命令.doc

    Oracle数据库是世界上最广泛使用的数据库系统之一,其丰富的特性和强大的功能使其在企业级应用中占据重要地位。本文将深入探讨Oracle数据库的一些常用命令,以及如何有效地利用数据字典。 一、Oracle的启动与关闭 ...

    Oracle系统表汇总.docx

    Oracle系统表是Oracle数据库管理系统中的一种重要组成部分,负责存储数据库对象的元数据信息。系统表是Oracle数据库管理系统的基础组件,提供了对数据库对象的描述、管理和维护。 用户管理 在Oracle数据库中,用户...

    Oracle 序列

    在Oracle数据库系统中,序列(Sequences)提供了一种自动递增或递减数值的方式,这对于插入新记录时自动生成唯一的ID非常有用,尤其是对于那些频繁插入数据的大型表。 序列的工作原理是,当你需要一个值时,通过...

    powerdesigner创建oracle_数据库表,设置表主键列为自动增长

    ### PowerDesigner 创建 Oracle 数据库表并设置主键...以上步骤详细介绍了如何使用PowerDesigner 12.5创建Oracle数据库表,并设置主键列的自动增长功能。这将极大地提高数据库开发的效率,并确保数据的一致性和完整性。

    Oracle 数据字典

    Oracle 数据库字典的应用非常广泛,借助 Oracle 数据字典,我们可以使用 Oracle 的 DDL 语句来完成许多任务,几乎所有的 Oracle 开发辅助工具都是利用这一点进行设计的。例如,我们可以使用数据字典来取得数据库...

    oracle序列主键自增长

    为了解决这个问题,可以在事务中使用序列,或者使用序列的`ORDER`选项。 - 缓存值的大小应根据并发用户数和表的插入频率进行调整,以平衡性能和序列值的唯一性。 - 序列不占用表空间,但会占用内存,因此,对于非常...

    Oracle入门很简单源代码集

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据重要地位。"Oracle入门很简单源代码集"是一份专为初学者设计的学习资源,旨在帮助新接触Oracle的用户快速掌握其基本概念、操作及编程...

    ORACLE数据字典使用入门

    Oracle 数据字典是数据库管理系统中的一个关键组成部分,它包含了关于数据库对象、权限、表空间等信息的元数据。对于Oracle数据库管理员和开发人员来说,熟悉数据字典的使用至关重要,因为它可以帮助他们理解和管理...

Global site tag (gtag.js) - Google Analytics