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

Oracle 中序列(sequence)介绍

阅读更多
     今天研发人员问起oracle中怎么设置自增,记得oracle中没有自增类型的字段的,所以通常情况下我们需要定义一个sequence来作为自动增长类型字段的数据。
于是记录了一些关于oracle sequence的资料,已备查用!
Oracle中的序列(sequence)
1: 如何定义一个序列
仅向前的数字变量(和SQL中的自动编号有点像 identity(1,2) )
      格式:
      create sequence
      start with
      increment by
      [maxvalue 值]
      [minvalue 值]
      [cycle 当到达最大值的时候,将继续从头开始]
      [Nocycle -- 一直累加,不循环]  
      [Cache ]
注意:
       第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值。 
         如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create
sequence的时候用nocache防止这种情况。
example:
      create sequence mySeq
      start with 1
      increment by 2
      maxvalue 40
      minvalue 1
      cycle
2:怎么去取序列数据:

      currval--->curenvalue
      nextVal-->NextVlaue
      example:
      select mySeq.nextVal from dual
注意一点:currval只有当nextVal执行一次以后才可以用.
在创建表的时候,可以使用序列.
具体例子:
      create table 公司基本信息表
      (
      ComPID int,
      CompName varchar2(20)
      )
insert into 公司基本信息表 values(mySeq.nextVal,'AA')
3:如何修改序列
       修改前提是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数目。
也可以这样
alter sequence mySeq maxvalue 500
注意:不能改start with,其他随便改(设置minvalue值的时候不能大于当前值)
4:如何查看删除某个表空间所有序列
查看:
      select * from user_sequences
如何删除:
      drop sequence 序列名称
5:sequence属于什么对象
     sequence不属于某个表,也不属于某个字段,sequence仅仅属于某个用户。
其实在创建了sequence后,每个表都可以使用这个sequence,但是这样会引起应用的很多麻烦,因此,建议每个表都使用一个sequence。

分享到:
评论

相关推荐

    Oracle sequence 重置(失效恢复)

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

    oracle中的sequence实现主键增长

    Oracle中的Sequence是数据库管理系统提供的一种机制,用于生成序列化的整数,通常用于主键或唯一标识符,确保数据的唯一性和有序性。在Oracle中,Sequence不同于其他数据库系统的自增字段,例如SQL Server中的`...

    oracle中sequence介绍及应用

    ### Oracle中的Sequence介绍及应用 #### 一、Sequence概述 在Oracle数据库中,Sequence是一种用于自动产生数值序列的对象。它可以生成连续的整数或者非连续的整数序列,并且可以根据需求进行递增或递减。Sequence...

    Oracle数据库中序列的使用

    本文将详细介绍Oracle数据库中序列的创建、修改以及删除方法,并通过一个具体的示例来演示序列的使用。 #### 序列的基本概念 序列是一种能够按需生成连续整数的数据库对象。它可以用于自动填充某些字段,特别是当...

    oracle 主键自增 sequence

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

    oracle 不用新建序列 重置序列(从1开始增长)

    本文将详细介绍如何在不新建序列的情况下,实现Oracle序列的重置,让其从1开始增长。这种方法通过编写PL/SQL过程来动态调整序列的增量,从而达到重置的目的。 ### Oracle序列重置方法 首先,我们需要理解Oracle...

    ORACLE SEQUENCE的简单介绍

    ### ORACLE SEQUENCE 的详细介绍与应用 #### 一、概述 在数据库开发和管理中,自动编号是一...以上是关于 Oracle Sequence 的详细介绍及应用场景,希望能帮助开发者更好地理解和使用 Oracle 数据库中的这一强大工具。

    java通过Mysql实现类似oracle序列功能序列.rar

    在Java应用程序中,如果需要在MySQL环境中实现类似Oracle序列的功能,我们需要自己设计解决方案。以下是一些关键知识点的详细说明: 1. **Java连接MySQL**: - 首先,你需要使用JDBC(Java Database Connectivity...

    mysql生成oracle序列

    为了在MySQL中实现类似于Oracle序列的功能,可以通过创建一张特殊的表和几个自定义函数来实现。这种方法可以有效地模拟Oracle序列的行为,并能够根据指定的步长和长度来生成数值。 ##### 2.1 创建模拟序列的表 在...

    分享ORACLE SEQUENCE跳号总结

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

    oracle序列创建、修改、删除

    在本篇中,我们将深入探讨Oracle序列的创建、修改和删除。 ### 1. 序列的创建 创建序列的基本语法如下: ```sql CREATE SEQUENCE sequence_name START WITH n -- 起始值 INCREMENT BY n -- 增量值 MINVALUE n ...

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

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

    oracle 建表 建序列

    下面将详细介绍创建序列的方法及应用实例。 ##### 创建序列示例 ```sql CREATE SEQUENCE id INCREMENT BY 1 -- 每次增加1 START WITH 1 -- 起始值为1 NOMAXVALUE -- 无最大值限制 NOCYCLE -- 不循环 CACHE 10; -- ...

    oracle导出序列

    在实际工作中,理解并掌握如何导出和导入Oracle序列是十分重要的,这有助于数据库维护、迁移和灾难恢复。同时,合理地设计和使用序列,可以优化数据库性能,保证数据的完整性和一致性。在进行这些操作时,应始终注意...

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

    在Oracle中,sequence是一种自动递增或递减的数字序列,常用于生成唯一的主键值,避免手动为每条新记录分配ID。创建一个sequence后,你可以通过nextval或currval函数获取序列的下一个或当前值。 Trigger则是数据库...

    批量修改Oracle序列值的存储过程

    批量修改Oracle序列值的需求可能出现在数据迁移、恢复或测试环境中,确保序列与实际数据匹配。这篇博客分享的是一个自定义的存储过程,用于批量修改Oracle序列的当前值(CURRENT VALUE)。 首先,我们需要理解...

    oracle索引、序列和权限设置

    ### 二、Oracle序列 序列是Oracle提供的一种自动生成唯一数值的机制,常用于为主键或需要唯一标识符的列自动分配值。在实验中,虽然没有明确展示序列的创建与使用,但可以利用`CREATE SEQUENCE`语句来创建一个序列...

    oracle自增序列

    本文将详细介绍如何在Oracle数据库中创建自增序列,并深入探讨其相关属性和应用场景。 #### 一、什么是Oracle自增序列? Oracle自增序列是一种特殊类型的序列,它可以按照设定的规则自动生成一系列连续的数字。...

    Oracle使用序列创建自增字段

    本文将详细介绍如何利用 Oracle 的序列功能来创建自增字段,并探讨其相关的配置选项及应用场景。 ### 创建序列 (Create Sequence) #### 基本语法与示例 在 Oracle 中,序列是一个用于生成一系列数字的对象,通常...

Global site tag (gtag.js) - Google Analytics