`
qimo601
  • 浏览: 3449128 次
  • 性别: 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,你就可以用CURRVAL,NEXTVAL 来使用 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;

CREATE SEQUENCE seq_alert
INCREMENT BY   1
START WITH   1
MAXVALUE   9999999999;

CREATE TRIGGER trg_alert
before insert on JIAXING.t_info_alert
for each row
begin
    select seq_alert.NEXTVAL into :NEW.P_ID from dual;
End trg_alert;

分享到:
评论

相关推荐

    oracle中sequence介绍及应用

    在Oracle数据库中,Sequence是一种用于自动产生数值序列的对象。它可以生成连续的整数或者非连续的整数序列,并且可以根据需求进行递增或递减。Sequence常用于为表中的某列自动生成唯一的主键值或者作为流水号使用。...

    Oracle sequence 重置(失效恢复)

    **Oracle Sequence** 是一种数据库对象,用于生成连续的整数序列。它可以被用来作为表中某一列的自动增长字段,例如主键ID。Sequence的主要优点是简单易用且性能高效。 #### 二、Sequence失效的原因 1. **数据迁移...

    使用JDeveloper开发WEB应用时同时使用Oracle的sequence和trigger

    通过以上步骤,开发者可以在JDeveloper中有效地利用Oracle的sequence和trigger特性,实现Web应用中的数据管理和逻辑控制。这不仅可以提高开发效率,也有助于保持数据的一致性和完整性。在实际项目中,应根据具体需求...

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

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

    oracle 其他数据库对象

    Oracle数据库的核心组成部分之一就是模式对象,这些对象是数据库中用户定义的对象,包括表、视图、索引等。模式对象属于数据库中的一个特定模式(schema),每个模式对应一个数据库用户。以下是Oracle数据库中几种常见...

    oracle_sequence.rar_oracle

    在Oracle中,序列(Sequence)是一个非常重要的概念,它主要用于生成唯一的整数序列,常常被用来作为主键值,特别是在插入新记录时自动增加。在本篇文章中,我们将深入探讨Oracle序列的创建、使用以及其在实际应用中...

    ORACLE SEQUENCE的简单介绍

    SEQUENCE 在 Oracle 中是一个对象,用于生成一系列连续的整数。这些数字可以按照定义的方式递增或递减,并且可以设置是否循环以及缓存等属性。 #### 二、创建 Sequence (Create Sequence) 为了在 Oracle 中使用 ...

    分享ORACLE SEQUENCE跳号总结

    在ORACLE数据库中,序列(SEQUENCE)是使用非常频繁的一个数据库对象,但是有时候会遇到序列(SEQUECNE)跳号(skip sequence numbers)的情形,那么在哪些情形下会遇到跳号呢?  事务回滚引起的跳号  不管序列有...

    oracle 主键自增 sequence

    在 Oracle 数据库中,`Sequence` 是一种用于生成一系列唯一数值的对象。这些数值可以按照特定的规则递增或递减,并且可以设定是否循环以及是否缓存等特性。`Sequence` 常用于自动生成主键值,特别是在没有使用 `AUTO...

    oracle 存储过程使用 sequence

    Sequence在Oracle中是一个预定义的对象,可以生成唯一的、连续的整数序列。创建Sequence时,你可以指定初始值、增长步长、是否循环等属性。例如,创建一个名为`USER_SEQ`的Sequence: ```sql CREATE SEQUENCE USER_...

    让CoolSQL支持Oracle Sequence的GeneratedKey,懂的入

    本篇文章将围绕"让CoolSQL支持Oracle Sequence的GeneratedKey"这一主题展开,探讨如何在开发过程中利用Oracle的Sequence特性并将其与CoolSQL工具相结合,以实现更高效的数据操作。 首先,Oracle Sequence是一种用于...

    oracle删除用户下的对象

    在Oracle数据库管理系统中,删除用户下的对象是一项常见的管理任务,这通常涉及到清理不再需要的数据空间,或者在重新分配用户权限时进行系统维护。本篇将详细介绍如何在Oracle中安全有效地删除用户下的所有对象。 ...

    oracle创建各种对象

    在Oracle数据库系统中,创建各种对象是数据库管理和开发的重要组成部分。这些对象构成了Oracle数据库的核心功能,使得数据存储、处理和管理变得高效且灵活。以下将详细介绍标题和描述中提到的各种对象及其创建方法。...

    sqlserver实现oracle的sequence方法

    然而,SQL Server并不直接支持Sequence对象。在SQL Server中,开发者经常使用Identity列来达到类似的效果,Identity列会在每次插入新行时自动递增一个值。但当需要更复杂的序列生成规则,如特定格式的序列号(如...

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

    序列(SEQUENCE)是Oracle中用于生成一系列唯一整数值的对象,通常用在需要主键的地方。序列的管理包括创建(CREATE SEQUENCE)、修改(ALTER SEQUENCE)和删除(DROP SEQUENCE)等操作。 同义词(SYNONYM)是表、...

    浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法

    为了实现Sequence,我们需要在Oracle数据库中创建一个序列对象,例如: ```sql CREATE SEQUENCE seq_user START WITH 1; ``` 这里创建了一个名为`seq_user`的Sequence,从1开始递增。 2. **配置MyBatis-Plus*...

    Oracle_UML对象建模设计

    在Oracle UML对象建模中,我们通常会使用以下几种UML图: 1. 类图(Class Diagram):显示类、接口及其关系,如继承、实现、关联、依赖等。在Oracle数据库设计中,类图可以帮助我们规划表结构和关系。 2. 用例图...

    Oracle 8 UML对象建模设计.zip

    3. **序列图(Sequence Diagram)**和协作图(Collaboration Diagram)**:这两种图描述了对象之间的动态交互,特别是在时间序列中的消息传递。在Oracle数据库设计中,这些图可以用来展示数据处理过程和事务流。 4. **...

    oracle自动增长列

    在Oracle数据库中,实现自动增长列的功能主要依赖于`SEQUENCE`对象。通过创建一个序列(SEQUENCE),可以方便地为表中的某列自动生成唯一的值,这对于主键或者需要唯一标识符的场景非常有用。 #### 1. SEQUENCE概述...

Global site tag (gtag.js) - Google Analytics