`
kidiaoer
  • 浏览: 805825 次
  • 性别: 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使用方法

    序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列, 序列中的可以升序生成,也可以降序生成。创建序列的语法是: 语法结构:创建序列 CREATE SEQUENCE sequence_name [START WITH ...

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

    主要介绍了浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    详解ORACLE SEQUENCE用法

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

    MyBatis Oracle 自增序列的实现方法

    给大家分享MyBatis Oracle 自增序列的实现方法及mybatis配置oracle的主键自增长的方法,非常不错具有一定的参考借鉴价值,感兴趣的朋友一起看看吧

    oracle 重置序列从指定数字开始的方法详解

    重置oracle序列从指定数字开始 代码如下: declare n number(10); v_startnum number(10):=10000001;–从多少开始 v_step number(10):=1;–步进 tsql varchar2(200); v_seqname varchar2(200):=’MIP_JF_SEQUENCE’;...

    sqlserver实现oracle的sequence方法

    还是老老实实用存储过程来取得一个Sequence值吧,使用起来也就随心所欲了。 网上常见的一个存储过程为 为当前库所有用到Sequence建一张表,譬如“AllSequence”,内含四个字段【名字,起点值,递增值,当前值】,...

    Oracle在表上建立自增字段的方法

    本方法为使用SEQUENCE(序列)  例如有表temp_test结构为:  create table TEMP_TEST  (  id number,  nm varchar(10),  primary key(id) //id为主键,下面的方法把它设为自增字段  )  1、建立...

    Oracle 10g 学习笔记

    │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置listener.ora【避免出现ORA-12514错误】.txt │ 贴子树状态存储结构.jpg │ 贴子树状态存储结构.sql │ ├─01 Oracle入门 │ 01 Oracle 简介.txt │ 02 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...

    ORACLE数据库基础知识-华为维护资料

    1.3.6 序列(Sequence) 17 1.3.7 数据库链(Database Link) 17 第2章 管理ORACLE数据库 19 2.1 启动与关闭 19 2.1.1 权限 19 2.1.2 ORACLE的四中状态 20 2.1.3 启动数据库 20 2.1.4 关闭数据库 22 2.2 应用开发...

    Oracle8i_9i数据库基础

    §4.3 序号(sequence) 146 §4.3.1 建立序号 146 §4.3.2 修改序号 147 §4.3.3 使用序号 147 §4.3.4 删除序号 147 §4.4 同义词 148 §4.4.1 建立同义词 148 §4.4.2 删除同义词 149 §4.5 视图、同义词和序列有关...

    oracle中的ID号实现自增长的方法

    序列(Sequence)是一种可以被多个用户使用的用于产生一系列唯一数字的数据库对象。序列定义存储在数据字典中,通过提供唯一数值的顺序表来简化程序设计工作,可以使用序列自动产生主键的键值。当一个序列第一次被...

    Oracle事例

    11、创建序列 select * from user_sequences; create sequence SEQ_NAME start with 1000 maxvalue 1000 increment by 1; alter sequence SEQ_NAME minvalue 50 maxvalue 100; 12、删除重复行 update a set ...

    Hibernate注解

    * 5.identity 使用SQL Server和MySQL的自增字段,这个方法不能放到Oracle中,Oracle不支持自增字段,要设定sequence(MySQL和SQL Server中很常用)。等同于JPA中的IDENTITY * 例:@GeneratedValue(generator = ...

    SQL性能优化

    1 性能优化 1.1 避免频繁 commit,尤其...说明:除非是单据的单号,要求必须是唯一,并且依据流水号不可以跳号,不然在大量交易的表格中,不在乎跳耗时,要取得唯一的Primary Key 建议使用Oracle Sequence这样速度会较...

    MySQL分表自增ID问题的解决方法

     在postgreSQL、oracle、db2数据库中有一个特殊的特性—sequence。 任何时候数据库可以根据当前表中的记录数大小和步长来获取到该表下一条记录数。然而,MySQL是没有这种序列对象的。  可以通过下面的方法来实现...

    【总结】数据库自增字段的 3 种实现方式

    在设计数据库的表结构时,经常会使用一个自动增长的数字序列作为主键字段(代理主键)。除了作为主键使用之外,自增字段也可以用于记录各个操作发生的先后顺序,因为它具有递增特性。当我们插入一行数据时,数据库会...

    db2-技术经验总结

    1.25. 序列(SEQUENCE) (原) 69 1.26. 数据的导入和导出 69 1 加载数据: 69 2 卸载数据: 70 3 在Load过程中使用的Exception 表有何作用,该如何创建?(原) 70 4如何导出(EXPORT),导入(LOAD)包含由公式生成字段的表...

    java面试题

    82. 异常的使用方法 98 83. JAVA代码查错 101 83.1. 判断 101 83.2. 判断 102 83.3. 判断 102 83.4. 判断 102 83.5. 判断 102 83.6. 判断 103 83.7. 判断 103 83.8. 判断 103 83.9. 判断 104 83.10. 判断 104 83.11....

    数据库基础

    §4.3 序号(sequence) 146 §4.3.1 建立序号 146 §4.3.2 修改序号 147 §4.3.3 使用序号 147 §4.3.4 删除序号 147 §4.4 同义词 148 §4.4.1 建立同义词 148 §4.4.2 删除同义词 149 §4.5 视图、同义词和序列有关...

Global site tag (gtag.js) - Google Analytics