在Oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
1、Create Sequence
你首先要有create sequence或者create any sequence权限,
CREATE SEQUENCE emp_sequence
increment by 1 -- 每次加几个
start with 1 -- 从1开始计数
NOMAXvalue -- 不设置最大值 (maxvalue 99999999)
nocycle -- 一直累加,不循环
cache 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,
也可以设置为---------NOCACHE
针对S_Test创建的sequence如下:
create sequence S_Test
minvalue 1
maxvalue 99999999
start with 1
increment by 1
nocache;
一旦定义了S_Test,你就可以用currval,nextval
currval=返回 sequence的当前值
nextval=增加sequence的值,然后返回 sequence 值
比如:
S_Test.CURRVAL
S_Test.NEXTVAL
可以使用sequence的地方:
- 不包含子查询、snapshot、view的 select 语句
- INSERT语句的子查询中
- NSERT语句的values中
- UPDATE 的 set中
可以看如下例子:
insert into S_Test(id,name,order)values(S_Test.Nextval,'wang',100);
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数目。
3、删除序列
简单的Drop Sequence
drop sequence S_Test;
下面是一个简单例子:
create sequence SEQ_ID
minvalue 1
maxvalue 99999999
start with 1
increment by 1
nocache
order;
建立解发器代码为:
create or replace trigger tri_test_id --触发器名称
before insert on Test --Test是表名
for each row
declare
nextid number;
begin
IF :new.id IS NULL or :new.id=0 THEN --id是列名
select SEQ_ID.nextval --S_Test正是刚才创建的序列
into nextid
from sys.dual;
:new.id:=nextid;
end if;
end tri_test_id;
上面的代码就可以实现id自动递增的功能了。
分享到:
相关推荐
### Oracle 使用序列创建自增字段 在数据库设计与开发中,自增字段是十分常见的需求之一,尤其是在需要为每一行记录自动分配一个唯一编号的情况下。Oracle 数据库通过序列(Sequence)这一特性支持自增字段的实现。...
本文将详细介绍几种主流数据库系统中的自增字段创建方法,包括 DB2、Oracle、MySQL、PostgreSQL、SQL Server 和 Sybase。 #### DB2 DB2 支持通过 `GENERATED ALWAYS AS IDENTITY` 属性来创建自增字段。这种方式...
Oracle 中创建表、序列、自增字段、添加注释、添加记录、添加触发器、提交的知识点总结 Oracle 中创建表是指在 Oracle 数据库中创建一个新的表结构,以存储特定的数据。在创建表时,需要指定表的名称、字段名称、...
primary key(id) //id为主键,下面的方法把它设为自增字段 ) 1、建立自增序列TEMP_TEST_IDADD,命名任意,从1开始,每次加1 CREATE SEQUENCE TEMP_TEST_IDADD INCREMENT BY 1 START WITH 1; 2、在表...
在Oracle数据库中,由于没有像SQL Server那样内置的自增字段功能,我们通常需要通过创建序列(SEQUENCE)和触发器(TRIGGER)来模拟这一效果。以下将详细讲解如何在Oracle中创建自增字段sequence,并讨论其相关知识...
### ORACLE自增主键设置方法 在Oracle数据库中,自增主键是一种常见的主键设计方式,它能够确保每条记录的唯一性,并且在插入新记录时自动递增,简化了数据管理流程。本文将详细介绍如何在Oracle中设置自增主键。 ...
本篇文章将详细介绍Oracle如何创建、使用、修改以及删除自增字段所用到的SEQUENCE。 首先,创建一个Oracle序列(SEQUENCE)可以使用`CREATE SEQUENCE`语句。例如,创建名为`S_S_DEPART`的序列: ```sql CREATE ...
在Oracle数据库中,自增字段通常通过序列(Sequence)和触发器(Trigger)来实现。本篇文章将详细解释如何创建一个自增字段,并通过具体的步骤和代码示例来进行说明。 #### 序列(Sequence) 序列是一种数据库对象...
通过这种方式,即使 Oracle 没有内置的自增字段,我们仍然可以利用序列和触发器来实现这一需求,确保数据的唯一性和一致性。这种方法适用于那些需要自动生成唯一标识符的情况,比如主键或业务流水号。需要注意的是,...
这种结合使用序列和触发器的方法是Oracle中一种常见的主键自增实现方式。它不仅确保了主键的唯一性和连续性,还大大提高了数据插入效率。在实际应用中,根据具体需求调整序列的参数以及触发器的逻辑是非常重要的。...
然而,如果你的环境是Oracle 11g或更早的版本,你将需要使用序列(Sequence)和触发器(Trigger)来模拟自增字段的行为。序列是Oracle中用于生成唯一整数的数据库对象,而触发器则是在特定数据库事件(如插入操作)...
下面我们将详细介绍如何利用Oracle的Sequence和Trigger创建自增字段。 1. **Sequence**: Sequence是Oracle数据库中用于生成唯一整数序列的数据库对象。它能够按照预定义的步长递增或递减,并且可以设置最小值、...
在Oracle数据库中,自增字段通常用于主键,为每个新插入的记录生成唯一的标识。本文将详细介绍如何通过简单三步实现Oracle字段自增。 第一步:创建一个表 首先,我们需要创建一个包含自增字段的表。在Oracle中,...
- 使用触发器创建语句创建一个触发器,该触发器会在插入新记录到表之前为自增字段设置值。 4. **插入数据**: - 在表中插入新记录时,无需指定自增字段的值,触发器会自动为其分配序列的下一个值。 5. **验证**...
在Oracle数据库管理中,创建自增主键是一种常见的需求,尤其是在需要自动为表中的每一行记录分配一个唯一标识符的情况下。本文将详细介绍如何利用Oracle提供的`SEQUENCE`和`TRIGGER`来实现自增主键。 #### 一、概述...
### Oracle自增序列知识点详解 在数据库应用中,序列是一种常用的数据对象,它能够自动产生唯一的数值,常用于实现表中的主键自增功能。Oracle数据库提供了强大的序列管理功能,可以方便地创建、管理和使用序列。...
通过上述介绍可以看出,在Oracle数据库中使用触发器结合序列的方式可以非常方便地实现记录的自增功能。这种方式不仅简单高效,而且非常适合于需要唯一标识符的场景。但在设计系统时也需要考虑到性能因素,合理地选择...
这些不同的自增字段创建方法反映了各种数据库系统的不同设计哲学和功能集。在实际应用中,根据所使用的数据库系统和特定需求选择合适的方法至关重要。理解这些差异有助于确保在数据库设计中实现高效、可靠的自增字段...
以下是一些关于在Oracle中创建主键自增实例的方法和相关知识点。 1. 使用序列(Sequences): Oracle序列是一种数据库对象,可以生成唯一的整数序列。创建序列后,可以在插入新记录时引用它来获取下一个可用的序列...
Oracle 数据库中实现属性的自增是通过序列和触发器来实现的。当给表中插入数据时触发触发器,触发器从序列中得到相应的数值放入相应的位置,这样实现属性的自增。 知识点一: Oracle 中没有 auto_increment 属性 ...