`

Oracle使用序列创建自增字段

阅读更多

在Oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
  1、Create Sequence
  你首先要有create sequence或者create any sequence权限
  Sql代码
  CREATE SEQUENCE SEQ_EMP
  INCREMENT BY 1 -- 每次加几个
  START WITH 1 -- 从1开始计数
  NOMAXVALUE -- 不设置最大值 (MAXVALUE 99999999)
  NOCYCLE -- 一直累加,不循环
  CACHE 10; --设置缓存CACHE个序列,如果系统DOWN掉了或者其它情况将会导致序列不连续,也可以设置为NOCACHE
  针对SEQ_EMP创建的sequence如下:
  Sql代码
  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中
  可以看如下例子:
  Sql代码
  INSERT INTO T_EMPLOYEE(ID,NAME,ORDER)VALUES(SEQ_EMP.NEXTVAL,´WANG´,100);

       查询序列  
      select SEQ_EMP.currval from dual  
  2、修改序列(Alter Sequence )
  你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以修改(alter)除start至以外的所有sequence参数。如果想要改变start值,必须删除序列( drop sequence ),再重新创建 (re-create )。
  Alter sequence 的例子
  Sql代码
  ALTER SEQUENCE SEQ_EMP
  INCREMENT BY 10
  MAXVALUE 10000
  CYCLE -- 到10000后从头开始
  NOCACHE ;
  影响Sequence的初始化参数:
  SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。
  3、删除序列
  简单的Drop Sequence
  Sql代码
  drop sequence SEQ_EMP;
  Sql代码
  CREATE SEQUENCE SEQ_EMP
  MINVALUE 1
  MAXVALUE 99999999
  START WITH 1
  INCREMENT BY 1
  NOCACHE
  ORDER;
  建立解发器代码为
  Sql代码
  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 中创建表是指在 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