`
liuxinglanyue
  • 浏览: 562620 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ORACLE SEQUENCE的简单介绍(自增长字段)

阅读更多

oraclesequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 
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,你就可以用CURRVALNEXTVAL 
CURRVAL=
返回 sequence的当前值 
NEXTVAL=
增加sequence的值,然后返回 sequence  
比如: 
emp_sequence.CURRVAL 
emp_sequence.NEXTVAL 

可以使用sequence的地方: 
不包含子查询、snapshotVIEW 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防止这种情况。

2Alter Sequence 
你或者是该sequenceowner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alterstart至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 
 re-create . 
Alter sequence 
的例子
 
ALTER SEQUENCE emp_sequence 
INCREMENT BY 10 
MAXVALUE 10000 
CYCLE -- 
10000后从头开始
 
NOCACHE ; 


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

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


好吧,就到这里。
 


------------------------------------------------------------- 
自增长及触发器


如何在Oracle 中实现类似自动增加 ID 的功能?
 
整理编辑:China
 ASP 

我们经常在设计数据库的时候用一个系统自动分配的ID来作为我们的主键,但是在ORACLE 中没有这样的
 

功能,我们可以通过采取以下的功能实现自动增加ID的功能
 
1.
首先创建
 sequence 
create sequence seqmax increment by 1 
2.
使用方法
 
select seqmax.nextval ID from dual 
就得到了一个ID
 
如果把这个语句放在 触发器中,就可以实现和ms sql 的自动增加ID相同的功能!

分享到:
评论

相关推荐

    oracle字段自增长

    在插入数据时,自增长字段可由空值 '' 或 null 代替,如果 insert 语句中列出了所插入的字段,如 insert into list(name) values('aaa'), 则增长字段不用写。 Oracle 字段自增长机制可以简化开发者的工作,提高开发...

    Oracle sequence 重置(失效恢复)

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

    oracle自动增长列

    通过以上介绍,我们可以看到`SEQUENCE`在Oracle数据库中是一种非常实用的对象,它可以帮助我们轻松地为表生成唯一的自动增长列。正确理解和运用`SEQUENCE`,能够极大地提高开发效率和数据管理的便捷性。

    oracle中的sequence实现主键增长

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

    oracle触发器实现主键自动增长

    在Oracle数据库中,实现主键自动增长是一种常见的需求,尤其在设计高并发、大数据量的系统时,确保每个记录都有一个唯一且连续的标识符变得至关重要。本文将深入探讨如何利用Oracle触发器来实现这一功能,同时也会...

    oracle设置主键自动增长

    本文主要介绍如何在 Oracle 数据库中设置主键自动增长,并通过具体的示例来帮助理解整个流程。 #### 二、创建表与自增主键 ##### 1. 创建表 首先,我们需要创建一张表。这里以 `example` 表为例,该表包含四个...

    oracle中用序列实现自动增长值

    在Oracle数据库系统中,与...通过理解序列的工作原理和使用方法,你可以更有效地管理Oracle数据库中的自动增长字段。在实际应用中,根据具体场景选择合适的序列设置和使用策略,可以优化数据库性能并确保数据的一致性。

    oracle主键自动增长

    在Oracle数据库中,并没有像MySQL那样的自动增长字段特性,因此在实际应用中,我们常常需要手动实现这一功能。序列(Sequence)是Oracle提供的一种用于生成一系列唯一数值的对象,非常适合用来作为表中的主键值。 #...

    OracleID自增长

    而在Oracle数据库中,与MySQL不同的是,它并没有提供直接的自增长字段功能。因此,为了实现类似MySQL的自增长特性,我们需要借助于Oracle提供的序列(sequence)和触发器(trigger)来实现这一功能。本文将详细介绍...

    oracle设置主外键即主键序列自动增长

    下面将详细介绍如何在Oracle中创建包含主键和外键的表,并利用触发器(Trigger)和序列实现主键的自动增长。 #### 一、创建包含主键和外键的表 首先,我们来看一下创建包含主键和外键的表的基本语法和步骤。 ####...

    oracle设定自增长列

    在Oracle数据库中,实现自增长列的功能是一种常见的需求,尤其在设计主键或者唯一标识符时。这通常用于确保每条记录都有一个唯一的、连续的编号。在给定的文件中,通过创建表、序列和触发器的方式实现了这一功能。...

    oracle序列主键自增长

    本文将深入探讨Oracle序列主键自增长的工作原理、创建方法以及如何在表中应用。 **1. Oracle序列(Sequences)基础** Oracle序列是一个数据库对象,它可以生成一系列唯一的数字,这些数字可以被用作表的主键。序列...

    oracle 创建字段自增长实现方式

    mysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而oracle却没有这样的功能,我们有以下两种方式可以解决字段自增长的功能。  因为两种方式都需要通过创建序列来实现,这里先给出序列的创建方式。 ...

    建立oracle带自增长表

    总的来说,通过组合使用序列和触发器,可以在Oracle中实现自增长列的功能,满足在插入新记录时自动为`ID`字段生成唯一值的需求。这种方式虽然相比其他数据库系统稍显复杂,但在Oracle环境中是标准的做法。

    oracle自增长与临时表

    自增长字段通常用于自动为新插入的记录生成唯一的标识符,而临时表则是在特定会话或事务中存储临时数据的结构。 **一、Oracle自增长** 在Oracle中,没有像其他数据库系统(如MySQL)那样内置的自增长机制。但是,...

    oracle自增长与sqlserver一样好用

    总之,无论是Oracle还是SQL Server,都提供了强大的工具和技术来支持自增长字段的需求。了解并掌握这些特性,对于数据库开发者和管理员来说至关重要,能够极大地提升数据管理的效率和系统的可靠性。

    oracle 自增长主键.doc

    Oracle数据库系统中,自增长主键是一种常见的设计模式,用于创建具有自动递增的唯一标识符。在Oracle中,我们通常使用序列(Sequence)来实现这个功能,而不是像其他数据库系统那样使用内置的自增机制。以下是对...

    在hibernate中实现oracle的自动增长

    在Oracle中创建一个序列(sequence)非常简单,只需要执行一条SQL语句即可。例如,为`DEPARTMENT`表创建一个名为`DEPARTMENT_ID_SEQ`的序列,其最小值设为10000,最大值设为极大的数字,增量为1,并且不循环: ```sql...

Global site tag (gtag.js) - Google Analytics