Oracle中SEQUENCES的使用
Oracle提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方.
下面介绍一下关于sequence 的生成,修改,删除等常用的操作:
1. 创建 Sequence
使用如下命令新建sequence(用户需要有CREATE SEQUENCE 或者CREATE ANY SEQUENCE权限):
CREATE SEQUENCE test_sequence
INCREMENT BY 1 -- 每次加的个数据
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10 ;
[注意]
如果设置了CACHE值,ORACLE将在内存里预先放置一些sequence,以使存取速度更快。cache里面的取完后,oracle自动再取一组到cache。 但是,使用cache可能会跳号, 当遇到数据库突然异常down掉(shutdown abort),cache中的sequence就会丢失.
因此,推荐在create sequence的时候使用 nocache 选项。
2. 使用 sequence:
sequence.CURRVAL -- 返回 sequence的当前值
sequence.NEXTVAL -- 增加sequence的值,然后返回 sequence 值
[注意]
第一次NEXTVAL返回的是初始值;
随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。
CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。
一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。
sequence 存储在数据字典中,存储于user_sequences表
LAST_NUMBER 为最终序列号,也就是sequence游标当前所在的位置。
//get sequence last_number
SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME=TEST_SEQNAME
// NEXTVAL 使游标指向下一位(增一或减一)
SELECT SEQNAME.NEXTVAL FROM USER_SEQUENCES 得到下一位游标的值
3. 修改 Sequence
用户必须拥有ALTER ANY SEQUENCE 权限才能修改sequence. 可以alter除start至以外的所有sequence参数.
如果想要改变start值,必须 drop sequence 再 re-create.
命令格式如下:
ALTER SEQUENCE test_sequence
INCREMENT BY 10
MAXVALUE 10000
CYCLE -- 到10000后从头开始
NOCACHE ;
4. 删除 Sequence
DROP SEQUENCE order_seq;
引用自校长的博客
http://blog.yesky.com/blog/eric1945/archive/2007/06/29/1685318.aspx?Pending=true#Post
分享到:
相关推荐
一、课程用到的软件:oracle 11g 二、课程目标: 1. 为有意从事oracle dba工作人员提供学习...第十六讲:oracle sequences管理 第十七讲:oracle 触发器管理 第十八讲:oracle 用户管理 第十九讲:oracle 安装部署管理
1. 使用序列(Sequences): Oracle序列是一种数据库对象,可以生成唯一的整数序列。创建序列后,可以在插入新记录时引用它来获取下一个可用的序列值。例如,创建一个名为`SEQ_PRIMARY_KEY`的序列: ```sql CREATE ...
### Toad for Oracle 使用手册关键知识点总结 #### 一、简介与新特性 - **Toad for Oracle**:是一款强大的数据库开发与管理工具,适用于Oracle数据库环境。 - **新版本特性**:概述了Toad for Oracle最新版本的...
4. **序列**:Oracle数据库中的序列(Sequences)是一种自动增长的数字序列,常用于生成唯一标识符,如主键。序列可以确保在多用户环境下数据的一致性和完整性。例如,可以创建一个名为emp_id_seq的序列,为新插入的...
Oracle 数据库中,字段值自动加 1 是一个常见的需求,特别是在数据插入时需要自动生成唯一标识符的情况下。下面将详细介绍如何实现 Oracle 数据库字段值自动加 1。 首先,需要创建一个表来存储数据。在本示例中,...
3. **数据库对象**:Oracle数据库包含多种对象,如表(Tables)、视图(Views)、索引(Indexes)、序列(Sequences)、存储过程(Stored Procedures)和触发器(Triggers)。它们是数据库应用的基础,满足不同的...
在 Oracle 中,可以使用以下语句来查询用户信息: ```sql select username from dba_users; ``` 此语句将返回所有用户的用户名信息。 表空间管理 表空间是 Oracle 数据库中的逻辑存储单元,用于存储数据库对象,...
在Oracle数据库中,序列(Sequences)是一种特殊的数据类型,用于生成唯一的整数序列,通常用于创建自动递增的主键。序列对于大型系统来说非常重要,因为它们可以确保数据的一致性和完整性。以下是对Oracle序列的...
### ORACLE中数据字典的使用方法 #### 数据字典概述 数据字典(Data Dictionary)在Oracle数据库中扮演着非常关键的角色。它是一个存储数据库和应用程序元数据的目录,这些元数据包括了数据库对象(如表、视图、...
使用以下SQL语句可以查看ORACLE数据库中的所有序列信息: SELECT * FROM user_sequences; 这条语句将显示数据库中所有的序列信息,包括序列的名称、当前值、最大值、最小值等信息。 2. 查看ORACLE数据库中的所有...
下面将详细介绍如何在Oracle中创建主键序列的脚本以及如何使用它们。 一、创建序列脚本 在Oracle中,创建一个序列可以使用`CREATE SEQUENCE`语句。下面是一个基本的创建序列的脚本示例: ```sql CREATE SEQUENCE ...
Oracle 数据字典是 Oracle 数据库中的一种重要组件,它提供了关于数据库对象的元数据信息。下面将对 Oracle 数据字典进行详细的介绍。 Oracle 数据字典是一种特殊的数据库表,存储了关于数据库对象的信息,如表、...
Oracle数据库是世界上最广泛使用的数据库系统之一,其丰富的特性和强大的功能使其在企业级应用中占据重要地位。本文将深入探讨Oracle数据库的一些常用命令,以及如何有效地利用数据字典。 一、Oracle的启动与关闭 ...
Oracle系统表是Oracle数据库管理系统中的一种重要组成部分,负责存储数据库对象的元数据信息。系统表是Oracle数据库管理系统的基础组件,提供了对数据库对象的描述、管理和维护。 用户管理 在Oracle数据库中,用户...
在Oracle数据库系统中,序列(Sequences)提供了一种自动递增或递减数值的方式,这对于插入新记录时自动生成唯一的ID非常有用,尤其是对于那些频繁插入数据的大型表。 序列的工作原理是,当你需要一个值时,通过...
### PowerDesigner 创建 Oracle 数据库表并设置主键...以上步骤详细介绍了如何使用PowerDesigner 12.5创建Oracle数据库表,并设置主键列的自动增长功能。这将极大地提高数据库开发的效率,并确保数据的一致性和完整性。
Oracle 数据库字典的应用非常广泛,借助 Oracle 数据字典,我们可以使用 Oracle 的 DDL 语句来完成许多任务,几乎所有的 Oracle 开发辅助工具都是利用这一点进行设计的。例如,我们可以使用数据字典来取得数据库...
为了解决这个问题,可以在事务中使用序列,或者使用序列的`ORDER`选项。 - 缓存值的大小应根据并发用户数和表的插入频率进行调整,以平衡性能和序列值的唯一性。 - 序列不占用表空间,但会占用内存,因此,对于非常...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据重要地位。"Oracle入门很简单源代码集"是一份专为初学者设计的学习资源,旨在帮助新接触Oracle的用户快速掌握其基本概念、操作及编程...
Oracle 数据字典是数据库管理系统中的一个关键组成部分,它包含了关于数据库对象、权限、表空间等信息的元数据。对于Oracle数据库管理员和开发人员来说,熟悉数据字典的使用至关重要,因为它可以帮助他们理解和管理...