`
Eric_liu
  • 浏览: 90773 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sequence字段(转)

阅读更多

在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
1、Create Sequence
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,
CREATE SEQUENCE emp_sequence
INCREMENT BY 1  -- 每次加几个
START WITH 1   -- 从1开始计数
NOMAXVALUE    -- 不设置最大值
NOCYCLE     -- 一直累加,不循环
CACHE 10;

一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL

可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- NSERT语句的VALUES中
- UPDATE 的 SET中

可以看如下例子:
INSERT INTO emp VALUES
(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);

SELECT empseq.currval FROM DUAL;

但是要注意的是:
- 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。明白?

- 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。

2、Alter Sequence
你或者是该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数目。

可以很简单的Drop Sequence
DROP SEQUENCE order_seq;

分享到:
评论

相关推荐

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

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

    NumberSequence

    3. **定义格式**:在“Number sequence code”字段中,选择刚刚创建的Code。接着,设置Prefix和Suffix,例如Prefix为“INV-”,Suffix为空。 4. **配置递增方式**:选择递增方式,如“连续”(每个新记录都会递增1...

    sequence等同于序列号

    在Oracle数据库中,`sequence`机制是一种自动生成唯一数值序列的方法,常用于为主键字段提供连续的整数值。它类似于其他数据库系统中的自动增长字段,但在Oracle中更加灵活可控。本文将详细介绍`sequence`的基本概念...

    Oracle sequence 重置(失效恢复)

    它可以被用来作为表中某一列的自动增长字段,例如主键ID。Sequence的主要优点是简单易用且性能高效。 #### 二、Sequence失效的原因 1. **数据迁移:** 当数据从一个环境迁移到另一个环境时,如果只是简单地复制了...

    根据mysql数据的一个字段数据修改另一个字段的数据

    要求:查询一个字段的数据,将每个数据拆分,取第一个字符,将第一个字符遍历出来,替换到另一个字段里面

    Sequence简单介绍.pdf

    - **注意**: 第一次调用`NEXTVAL`时返回的是起始值,之后的调用则会根据`INCREMENT BY`字段自动递增。 - **SQL Server端**:在SQL Server中,虽然没有直接的`Sequence`概念,但可以使用`IDENTITY`属性来模拟自增列...

    设置db2 字段自增长

    通过以上介绍,可以看出DB2提供了多种方式来实现字段的自增长,包括直接使用`GENERATED ALWAYS AS IDENTITY`特性以及通过触发器和Sequence实现。选择哪种方式取决于具体的应用场景和需求。对于大多数情况来说,直接...

    oracle中的sequence实现主键增长

    在Oracle中,Sequence不同于其他数据库系统的自增字段,例如SQL Server中的`IDENTITY`属性。Sequence可以在不依赖于任何表的情况下独立创建,并且可以在插入记录时动态地获取下一个可用的序列号。 以下是对Sequence...

    apb_sequence_item.rar

    标题中的"apb_sequence_item.rar"表明这是一个与Advanced Peripheral Bus(APB)协议相关的序列化项目,可能包含用于验证目的的随机化字段。APB是一种常见的总线接口标准,常用于连接微处理器和外围设备,它在系统级...

    Oracle创建自增字段sequence

    在Oracle数据库中,由于没有像SQL Server那样内置的自增字段功能,我们通常需要通过创建序列(SEQUENCE)和触发器(TRIGGER)来模拟这一效果。以下将详细讲解如何在Oracle中创建自增字段sequence,并讨论其相关知识...

    ORACLE SEQUENCE的简单介绍

    首先创建一个 Sequence,然后为表创建一个 BEFORE INSERT 触发器,该触发器将在每次插入新记录时自动设置主键字段。 ```sql CREATE SEQUENCE a_sequence START WITH 1 INCREMENT BY 1; CREATE TABLE t (n ...

    oracle数据库字段值自动加1

    CREATE SEQUENCE SEQ_EXCELFILE_LINE MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 20; ``` 最后,需要创建一个触发器(Triggers)来实现字段值自动加 1。在 Oracle 数据库中,触发器是一种特殊的数据库对象,用于...

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

    2. **使用Sequence**:在实体类或者DAO层,你可以通过调用数据库的序列函数(如`seq_name.nextval`)来获取序列的下一个值,将其插入到需要唯一ID的字段。 3. **创建Trigger**:在JDeveloper中,可以使用DDL或可视...

    python读取pcap文件.pdf

    在内容部分,文档首先列举了多种协议类型,这些协议类型是通过EtherType字段来识别的。EtherType字段在以太网帧中标识上层协议的类型,比如IPv4、IPv6或者ARP等。之后,文档引入了Python代码的片断,显示了一段类...

    oracle 主键自增 sequence

    为了使用 `Sequence` 为表中的主键字段赋值,可以通过以下步骤进行: 1. **创建表**: ```sql CREATE TABLE example( ID Number(4) NOT NULL PRIMARY KEY, NAME VARCHAR(25), PHONE VARCHAR(10), ADDRESS ...

    常用数据库的自增字段创建方法汇总

    Oracle 数据库不直接支持自增字段,但可以通过序列(Sequence)和触发器(Trigger)的组合来实现。步骤如下: 1. **创建序列**: ```sql CREATE SEQUENCE T1_ID_SEQ INCREMENT BY 1 START WITH 1 NO MAXVALUE ...

    oracle建触发器与创建递增字段

    ### Oracle 创建触发器与创建递增字段 #### 一、Oracle数据库中的递增字段实现方法 在Oracle数据库中,为了实现自动递增的功能,我们通常会使用`SEQUENCE`对象来实现这一目标。序列(SEQUENCE)是Oracle提供的用于...

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

     primary key(id) //id为主键,下面的方法把它设为自增字段  )  1、建立自增序列TEMP_TEST_IDADD,命名任意,从1开始,每次加1  CREATE SEQUENCE TEMP_TEST_IDADD INCREMENT BY 1 START WITH 1;  2、在表...

    主键生成器sequence

    ### 主键生成器sequence在Oracle中的应用 #### 一、概述 在数据库设计与开发过程中,经常需要为数据表中的某列(通常是主键)自动分配一个唯一且递增的值,以确保每一行记录的独特性。Oracle数据库提供了一种非常...

Global site tag (gtag.js) - Google Analytics