在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 数据库通过序列(Sequence)这一特性支持自增字段的实现。...
Oracle 中创建表、序列、自增字段、添加注释、添加记录、添加触发器、提交的知识点总结 Oracle 中创建表是指在 Oracle 数据库中创建一个新的表结构,以存储特定的数据。在创建表时,需要指定表的名称、字段名称、...
本文将详细介绍几种主流数据库系统中的自增字段创建方法,包括 DB2、Oracle、MySQL、PostgreSQL、SQL Server 和 Sybase。 #### DB2 DB2 支持通过 `GENERATED ALWAYS AS IDENTITY` 属性来创建自增字段。这种方式...
primary key(id) //id为主键,下面的方法把它设为自增字段 ) 1、建立自增序列TEMP_TEST_IDADD,命名任意,从1开始,每次加1 CREATE SEQUENCE TEMP_TEST_IDADD INCREMENT BY 1 START WITH 1; 2、在表...
下面我们将详细介绍如何利用Oracle的Sequence和Trigger创建自增字段。 1. **Sequence**: Sequence是Oracle数据库中用于生成唯一整数序列的数据库对象。它能够按照预定义的步长递增或递减,并且可以设置最小值、...
在Oracle数据库中,自增字段通常通过序列(Sequence)和触发器(Trigger)来实现。本篇文章将详细解释如何创建一个自增字段,并通过具体的步骤和代码示例来进行说明。 #### 序列(Sequence) 序列是一种数据库对象...
Oracle 数据库虽然没有内置的自增字段类型,但可以通过序列(Sequence)和触发器(Trigger)来模拟这一功能。以下是如何在 Oracle 中创建自增列的详细步骤和相关知识点: 1. **创建序列(Sequence)** - `CREATE ...
- 使用触发器创建语句创建一个触发器,该触发器会在插入新记录到表之前为自增字段设置值。 4. **插入数据**: - 在表中插入新记录时,无需指定自增字段的值,触发器会自动为其分配序列的下一个值。 5. **验证**...
Oracle 数据库中实现属性的自增是通过序列和触发器来实现的。当给表中插入数据时触发触发器,触发器从序列中得到相应的数值放入相应的位置,这样实现属性的自增。 知识点一: Oracle 中没有 auto_increment 属性 ...
在实际应用中,"Oracle数据库表序列ID自增生成器"可能是一个工具或脚本,简化了上述过程,自动为用户创建所需的序列和触发器。通过使用这样的工具,数据库管理员和开发人员可以更高效地管理他们的表结构,无需手动...
在Oracle数据库中,由于没有像SQL Server那样内置的自增字段功能,我们通常需要通过创建序列(SEQUENCE)和触发器(TRIGGER)来模拟这一效果。以下将详细讲解如何在Oracle中创建自增字段sequence,并讨论其相关知识...
然而,如果你的环境是Oracle 11g或更早的版本,你将需要使用序列(Sequence)和触发器(Trigger)来模拟自增字段的行为。序列是Oracle中用于生成唯一整数的数据库对象,而触发器则是在特定数据库事件(如插入操作)...
#### 二、使用触发器实现序列自增 接下来,我们将结合触发器来实现序列的自增功能。触发器是一种特殊类型的存储过程,当特定的事件发生时(如插入、更新或删除数据)会自动执行。 ##### 创建触发器示例: ```sql ...
在Oracle数据库中,当需要实现类似其他数据库系统(如MySQL、SQL Server等)中的自动增长字段功能时,通常会采用序列(sequence)和触发器(trigger)来实现这一需求。下面将详细介绍如何通过序列和触发器实现在插入...
除了使用序列实现自增主键外,Oracle还提供了其他几种主键生成策略,比如使用`SYS_GUID()`函数生成全局唯一标识符(GUID)作为主键。这种方法适用于需要全局唯一性的场景,但可能不适合对性能要求较高的应用,因为`...
首先,创建一个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数据库中,创建自增ID字段并非像其他数据库(如MySQL或SQL Server)那样简单直接,因为Oracle没有内置的自增标识符功能。但是,通过使用序列(Sequences)和触发器(Triggers),我们可以模拟这个过程。下面...
在Oracle数据库中实现主键自增功能可以通过创建序列(sequence)与触发器(trigger)相结合的方式实现。这种方式不仅能够确保数据表中的主键唯一性,还能自动递增,极大地简化了开发人员的工作。 #### 创建Sequence...