`
kidiaoer
  • 浏览: 821883 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Oracle sequence序列的用法

阅读更多
Oracle sequence序列的用法


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 不用新建序列 重置序列(从1开始增长)

    3. **修改序列的`INCREMENT BY`属性**:使用`ALTER SEQUENCE`语句将序列的`INCREMENT BY`属性修改为我们计算出的增量。 4. **再次获取序列的下一个值**:执行`SELECT sequence_name.NEXTVAL FROM DUAL`,这将使序列...

    ORACLE SEQUENCE的简单介绍

    一旦创建了 Sequence,就可以通过 `NEXTVAL` 和 `CURRVAL` 方法来获取和使用这些序列值: - `NEXTVAL`:每次调用时都会返回序列的下一个值,并且自动更新序列的当前值。 - `CURRVAL`:返回序列的当前值。需要注意的...

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

    在Oracle数据库中,序列是一种非常重要的工具,它用于生成唯一的整数序列,通常用作主键。...请注意,这种方法可能不如Oracle的序列功能那么高效,但在没有内置序列功能的MySQL中,这是一种可行的解决方案。

    oracle序列的用法

    本文将深入探讨Oracle序列的基本概念、创建方法以及使用技巧。 #### 序列的概念 序列是一种数据库对象,可以按需生成连续的数值。这些数值可以是递增或递减的,并且可以根据设定的最小值和最大值循环生成。序列...

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

    总的来说,使CoolSQL支持Oracle Sequence的GeneratedKey需要对数据库操作流程有深入理解,无论是通过扩展工具源码、配置、使用JDBC API还是借助ORM框架,都需要结合具体项目需求和CoolSQL的功能来选择合适的方法。...

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

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

    mysql生成oracle序列

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

    Oracle数据库中序列的使用

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

    分享ORACLE SEQUENCE跳号总结

    在Oracle数据库中,序列(SEQUENCE)是一种特殊的数据类型,用于生成唯一且递增的整数值,常用于主键生成或其他需要唯一标识的场景。然而,有时会出现序列跳号(skip sequence numbers)的情况,即序列值没有按照...

    oracle 建表 建序列

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

    oracle索引、序列和权限设置

    在Oracle数据库管理中,索引、序列和权限设置是三个非常关键的概念,它们分别...通过上述实验内容,我们深入了解了Oracle数据库中索引、序列和权限设置的基本概念和操作方法,这对于管理和优化大型数据库系统至关重要。

    oracle导出序列

    有多种方式可以实现这一目标,但这里我们将重点介绍使用PL/SQL Developer工具的方法,这是一个强大的Oracle数据库管理工具。 1. 打开PL/SQL Developer,连接到你的Oracle数据库实例。 2. 在顶部菜单栏中,选择...

    oracle 主键自增 sequence

    通过上面的例子,我们可以看到如何在 Oracle 中使用 `Sequence` 来实现主键自增的功能。这种方法非常适用于那些需要唯一标识符但又没有内置自增功能的情况。`Sequence` 的灵活性也使得开发者可以根据实际需求来定制...

    Oracle创建序列的方法及技巧.doc

    Oracle数据库中的序列(Sequence)是一种特殊的数据类型,用于生成唯一的整数序列,通常用作主键的值。在Oracle中,创建序列可以帮助我们自动化生成唯一标识符,避免手动管理这些值,尤其在需要大量插入新记录时,...

    oracle中用序列实现自动增长值

    在Oracle数据库系统中,与...通过理解序列的工作原理和使用方法,你可以更有效地管理Oracle数据库中的自动增长字段。在实际应用中,根据具体场景选择合适的序列设置和使用策略,可以优化数据库性能并确保数据的一致性。

    MyBatis Oracle 自增序列的实现方法

    在Oracle数据库中,由于没有像MySQL的`auto_increment`或者SQL Server的`IDENTITY`这样的内置机制,所以自增序列的实现通常需要借助于Oracle的`SEQUENCE`对象。MyBatis,作为一个强大的ORM(对象关系映射)框架,...

    oracle 创建序列

    在Oracle数据库管理中,序列(Sequence)是一种非常实用的对象类型,它主要用于自动生成唯一的数值。序列可以被多个用户共享,并且在并发环境中也能保持良好的性能。本文将详细介绍如何在Oracle数据库中创建序列、...

    详解ORACLE SEQUENCE用法

    在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。 1、Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。 创建语句如下: CREATE SEQUENCE seqTest INCREMENT...

Global site tag (gtag.js) - Google Analytics