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

Oracle 使用序列创建自增字段

阅读更多

 在Oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
        1、Create Sequence
        你首先要有create sequence或者create any sequence权限

CREATE SEQUENCE SEQ_EMP   
INCREMENT BY 1 -- 每次加几个    
START WITH 1 -- 从1开始计数    
NOMAXVALUE -- 不设置最大值 (MAXVALUE 99999999)   
NOCYCLE -- 一直累加,不循环    
CACHE 10; --设置缓存CACHE个序列,如果系统DOWN掉了或者其它情况将会导致序列不连续,也可以设置为NOCACHE  

 针对SEQ_EMP创建的sequence如下:

CREATE SEQUENCE SEQ_EMP   
MINVALUE 1   
MAXVALUE 99999999   
START WITH 1   
INCREMENT BY 1   
NOCACHE;  

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

        可以使用sequence的地方:
        - 不包含子查询、snapshot、view的 select 语句
        - INSERT语句的子查询中
        - NSERT语句的values中
        - UPDATE 的 set中

        可以看如下例子:

INSERT INTO T_EMPLOYEE(ID,NAME,ORDER)VALUES(SEQ_EMP.NEXTVAL,'WANG',100); 

 

2、修改序列(Alter Sequence )
         你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以修改(alter)除start至以外的所有sequence参数.如果想要改变start值,必须删除序列( drop sequence ),再重新创建 (re-create ).
        Alter sequence 的例子

ALTER SEQUENCE SEQ_EMP   
INCREMENT BY 10    
MAXVALUE 10000    
CYCLE -- 到10000后从头开始    
NOCACHE ;

 

影响Sequence的初始化参数:
         SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。

        3、删除序列
        简单的Drop Sequence

drop sequence SEQ_EMP;  

 

CREATE SEQUENCE SEQ_EMP   
MINVALUE 1   
MAXVALUE 99999999   
START WITH 1   
INCREMENT BY 1   
NOCACHE   
ORDER;  

 

建立解发器代码为

CREATE OR REPLACE TRIGGER TRI_EMP_ID --触发器名称   
  BEFORE INSERT ON T_EMPLOYEE    --T_EMPLOYEE是表名   
  FOR EACH ROW   
DECLARE  
   NEXTID NUMBER;   
BEGIN  
  IF :NEW.ID IS NULL OR :NEW.ID=0 THEN --ID是列名   
    SELECT SEQ_EMP.NEXTVAL --SEQ_EMP正是刚才创建的序列   
    INTO NEXTID   
    FROM SYS.DUAL;   
     :NEW.ID:=NEXTID;   
  END IF;   
END TRI_EMP_ID;

 

上面的代码就可以实现id自动递增的功能了。

分享到:
评论

相关推荐

    Oracle使用序列创建自增字段

    ### Oracle 使用序列创建自增字段 在数据库设计与开发中,自增字段是十分常见的需求之一,尤其是在需要为每一行记录自动分配一个唯一编号的情况下。Oracle 数据库通过序列(Sequence)这一特性支持自增字段的实现。...

    Oracle中创建表,创建序列,创建自增字段,添加注释, 添加记录,添加触发器,提交

    Oracle 中创建表、序列、自增字段、添加注释、添加记录、添加触发器、提交的知识点总结 Oracle 中创建表是指在 Oracle 数据库中创建一个新的表结构,以存储特定的数据。在创建表时,需要指定表的名称、字段名称、...

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

    本文将详细介绍几种主流数据库系统中的自增字段创建方法,包括 DB2、Oracle、MySQL、PostgreSQL、SQL Server 和 Sybase。 #### DB2 DB2 支持通过 `GENERATED ALWAYS AS IDENTITY` 属性来创建自增字段。这种方式...

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

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

    Oracle9i中建立自增字段的最新办法

    下面我们将详细介绍如何利用Oracle的Sequence和Trigger创建自增字段。 1. **Sequence**: Sequence是Oracle数据库中用于生成唯一整数序列的数据库对象。它能够按照预定义的步长递增或递减,并且可以设置最小值、...

    oracle里建一个自增字段示例

    在Oracle数据库中,自增字段通常通过序列(Sequence)和触发器(Trigger)来实现。本篇文章将详细解释如何创建一个自增字段,并通过具体的步骤和代码示例来进行说明。 #### 序列(Sequence) 序列是一种数据库对象...

    oracle数据库如何创建自增列的技巧教程.docx

    Oracle 数据库虽然没有内置的自增字段类型,但可以通过序列(Sequence)和触发器(Trigger)来模拟这一功能。以下是如何在 Oracle 中创建自增列的详细步骤和相关知识点: 1. **创建序列(Sequence)** - `CREATE ...

    创建oracle数据库中表的主键和自增

    - 使用触发器创建语句创建一个触发器,该触发器会在插入新记录到表之前为自增字段设置值。 4. **插入数据**: - 在表中插入新记录时,无需指定自增字段的值,触发器会自动为其分配序列的下一个值。 5. **验证**...

    oracle实现属性的自增

    Oracle 数据库中实现属性的自增是通过序列和触发器来实现的。当给表中插入数据时触发触发器,触发器从序列中得到相应的数值放入相应的位置,这样实现属性的自增。 知识点一: Oracle 中没有 auto_increment 属性 ...

    Oracle数据库表序列ID自增生成器

    在实际应用中,"Oracle数据库表序列ID自增生成器"可能是一个工具或脚本,简化了上述过程,自动为用户创建所需的序列和触发器。通过使用这样的工具,数据库管理员和开发人员可以更高效地管理他们的表结构,无需手动...

    Oracle创建自增字段sequence

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

    Oracle里的自增字段设置

    然而,如果你的环境是Oracle 11g或更早的版本,你将需要使用序列(Sequence)和触发器(Trigger)来模拟自增字段的行为。序列是Oracle中用于生成唯一整数的数据库对象,而触发器则是在特定数据库事件(如插入操作)...

    oracle通过触发器,实现序列自增

    #### 二、使用触发器实现序列自增 接下来,我们将结合触发器来实现序列的自增功能。触发器是一种特殊类型的存储过程,当特定的事件发生时(如插入、更新或删除数据)会自动执行。 ##### 创建触发器示例: ```sql ...

    Oracle插入数据时获取自增ID

    在Oracle数据库中,当需要实现类似其他数据库系统(如MySQL、SQL Server等)中的自动增长字段功能时,通常会采用序列(sequence)和触发器(trigger)来实现这一需求。下面将详细介绍如何通过序列和触发器实现在插入...

    ORACLE自增主键设置方法

    除了使用序列实现自增主键外,Oracle还提供了其他几种主键生成策略,比如使用`SYS_GUID()`函数生成全局唯一标识符(GUID)作为主键。这种方法适用于需要全局唯一性的场景,但可能不适合对性能要求较高的应用,因为`...

    Oracle创建自增字段--ORACLE SEQUENCE的简单使用介绍

    首先,创建一个Oracle序列(SEQUENCE)可以使用`CREATE SEQUENCE`语句。例如,创建名为`S_S_DEPART`的序列: ```sql CREATE SEQUENCE S_S_DEPART MINVALUE 1 MAXVALUE 999999999999999999999999999 START WITH 1 ...

    oracle自增序列

    Oracle数据库提供了强大的序列管理功能,可以方便地创建、管理和使用序列。本文将详细介绍如何在Oracle数据库中创建自增序列,并深入探讨其相关属性和应用场景。 #### 一、什么是Oracle自增序列? Oracle自增序列...

    Oracle主键自增的办法

    通过这种方式,即使 Oracle 没有内置的自增字段,我们仍然可以利用序列和触发器来实现这一需求,确保数据的唯一性和一致性。这种方法适用于那些需要自动生成唯一标识符的情况,比如主键或业务流水号。需要注意的是,...

    在oracle数据库里创建自增ID字段的步骤

    在Oracle数据库中,创建自增ID字段并非像其他数据库(如MySQL或SQL Server)那样简单直接,因为Oracle没有内置的自增标识符功能。但是,通过使用序列(Sequences)和触发器(Triggers),我们可以模拟这个过程。下面...

    如何实现Oracle自增,序列,触发器都有

    在Oracle数据库中实现主键自增功能可以通过创建序列(sequence)与触发器(trigger)相结合的方式实现。这种方式不仅能够确保数据表中的主键唯一性,还能自动递增,极大地简化了开发人员的工作。 #### 创建Sequence...

Global site tag (gtag.js) - Google Analytics