`
libran
  • 浏览: 188253 次
  • 性别: 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 安装部署管理

    java自动生成Oracle sequence管理类

    Oracle自增长主键自动生成类 public static int nextID String table { if table null return 1; table table toLowerCase ; String strKey table; if sequences containsKey strKey { ...

    Sequences用法

    Sequences用法 主要介绍oracle 如何设置自增

    最完整的Toad For Oracle使用手册

    Sequences 977 Synonyms 978 System Privileges 980 Tables 981 Tablespaces 996 Triggers 1002 Types 1004 Users 1010 Views 1012 Troubleshooting 1017 Unicode Troubleshooting 1017 Hints and Tips: Connecting ...

    Oracle 常用系统表

    ORACLE数据库的系统参数都存储在数据库中,可以通过SQLPLUS,以用户SYSYTEM进行查询。几个重要的表或者视图如下: v$controlfile:控制文件的信息; v$datafile:数据文件的信息; v$log:日志文件的信息; v$...

    Oracle PL/SQL语言初级教程

    文档目录内容如下: Oracle PL/SQL语言初级教程 1 目录 1 1.PL/SQL语言基础 3 过程 5 包(package) 6 ...在游标FOR循环中使用查询 86 游标中的子查询 86 9.PL/SQL异常处理初步 88 异常传播 91 常用异常处理方法 93

    GoldenGate Oracle University 培训教材

    ORACLE SEQUENCES ———— 177 CONFIGURATION OPTIONS 178 BATCHSQL———— 179 COMPRESSION ———— 182 ENCRYPTION ———— 183 EVENT ACTIONS ———— 187 BIDIRECTIONAL CONSIDERATIONS ————— 192 ...

    Oracle PL/SQL programming(5th Edition)

    Understand and use new Oracle Database 11g features, including the edition-based redefinition capability, the function result cache, the new CONTINUE statement, fine-grained dependency tracking, ...

    最全的oracle常用命令大全.txt

    ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用 6、startup force 强制启动方式 当不能关闭数据库时,可以用startup force来完成数据库的关闭 先关闭数据库,再执行正常启动数据库命令 7、...

    oracle-pl-sql-programming-5th-edition

    Understand and use new Oracle Database 11g features, including the edition-based redefinition capability, the function result cache, the new CONTINUE statement, fine-grained dependency tracking, ...

    Oracle 性能调整(真正由ORACLE甲骨文出品)

    – V$SQLAREA, 检索可能的候选共享SQL – 建议使用存储过程和变量 – 使用DBMS_SHARED_POOL把大的或常用的PL/SQL, cursors, sequences, triggers, packages and procedures 预装入SGA ...

    Oracle PL/SQL Programming, 5th Edition

    Understand and use new Oracle Database 11g features, including the edition-based redefinition capability, the function result cache, the new CONTINUE statement, fine-grained dependency tracking, ...

    Oracle新建用户、角色,授权,建表空间的sql语句

    oracle数据库的权限系统...例如delete权限允许用户删除表或视图的行,select权限允许用户通过select从表、视图、序列(sequences)或快照(snapshots)中查询信息。 每个oracle用户都有一个名字和口令,并拥有一些由其创建的

    Oracle Row Pattern Matching in Sequences of Rows-计算机科学

    ANSI NCITS H2-2006-nnn- 1 of 30 -Title: Pattern matching in sequences of rows (11)Author: Anonymous Source: U.S.A. Status: Change proposal Date: March 21, 2007AbstractThis paper addresses the need of ...

    12c – 使用跨平台增量备份来减少传输表空间的停机时间 (Doc ID 2102859.1).pdf

    (比如存储在 SYSTEM 表空间内的 pl/sql 对象,sequences 等),你可以使用数据泵来拷贝这些对象至目标系统。 注意: 考虑使用新release的版本V4的过程。 这个版本极大地简化了相关步骤。 请参考文档:V4 Reduce ...

    Oracle事例

    20.oracle8中扩充了group by rollup和cube的操作。有时候省了你好多功夫的。 下面的语句可以进行总计 select region_code,count(*) from aicbs.acc_woff_notify group by rollup(region_code); <2> 对第1个字段...

    Oracle Core Essential Internals for DBAs and Developers ■ ■

    Oracle in Processes ........................................................................................................... 1 Oracle in Action ........................................................

    C#进销存系统

    再补充一点:Oracle的自动增长列并不是像SqlServer那样设置一下,就会自动增长,Oracle里面需要你自己创建Sequences,图形操作也行,命令也行,我导出的Oracle脚本里面已经包含了相应的Sequences,应该可以看懂的。...

    Oracle P/L SQL实现发送Email、浏览网页等网络操作功能

    ab_Inline in Boolean Default False --True将文本内容直接在邮件内容显示出来,并出现在附件中,False不显示只出现在附件中 ); -----------------自动签名的生成,签名生成显示后还出现此签名文件为附件...

    orcale常用命令

    ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用 6、startup force 强制启动方式 当不能关闭数据库时,可以用startup force来完成数据库的关闭 先关闭数据库,再执行正常启动数据库命令 7、...

Global site tag (gtag.js) - Google Analytics