在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按
序列号排序的地方。
1、 create sequence
你首先要有create sequence或者create any sequence权限,
create sequence emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10; --预分配缓存大小为10
一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回sequence的当前值
NEXTVAL=增加sequence的值,然后返回sequence值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL
可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 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防止这种情况。
2、 Alter sequence
你或者是该sequence的owner,或者有ALTER ANY sequence权限才能改动sequence。 可
以alter除start值之外的所有sequence参数。如果想要改变start值,必须drop sequence
再re-create。例子:
ALTER sequence emp_sequence
INCREMENT BY 10
MAXVALUE 10000
CYCLE -- 到10000后从头开始
NOCACHE;
影响sequence的初始化参数:
sequence_CACHE_ENTRIES =
设置能同时被cache的sequence数目。
可以很简单的Drop sequence
DROP sequence order_seq;
用plsqldev创建:
1. 用plsql 可以用界面直接新建一个 Sequences , 不用写代码,如果想看代码的话,右下角有一个查看 SQL 的,很方便.
2. 查询
SELECT SEQ_Name.NEXTVAL FROM DUAL
相关步骤图片:
1. 可以点右键新建
2. 新建后,输入你的相关配置
循环是指cycle, 即达到最大值后,此序列又从最小值开始,根据自己需求选择
(我的这里是查看页面,所以为禁用)
3.
查看所对应的 SQL
4.
用存储过程为多表生成序列:
为每张表生成对应的序列
--创建存储过程
create or replace procedure p_createseq(tablename in varchar2)
is
strsql varchar2(500);
begin
strsql:='create sequence seq_'||tablename||' minvalue 1000 maxvalue 99999999 start with 1000 increment by 1 nocache';
execute immediate strsql;
end p_createseq;
/
--创建序列
exec p_createseq('t_power');
exec p_createseq('t_roler');
exec p_createseq('t_roler_power');
exec p_createseq('t_department');
exec p_createseq('t_quarters');
exec p_createseq('t_quarters_roler');
exec p_createseq('t_emp');
exec p_createseq('t_require_plan');
Oracle 将升序序列的最大值设置为:10的27次方.
如果序列号要连续,则需要每个表创建一个,这样每个表的号是连续的;
如果数据量很大,最好分开;最大值、和最小值在你创建seqences可以指定。
分享到:
相关推荐
**Oracle Sequence** 是一种数据库对象,用于生成连续的整数序列。它可以被用来作为表中某一列的自动增长字段,例如主键ID。Sequence的主要优点是简单易用且性能高效。 #### 二、Sequence失效的原因 1. **数据迁移...
Oracle中的Sequence是数据库管理系统提供的一种机制,用于生成序列化的整数,通常用于主键或唯一标识符,确保数据的唯一性和有序性。在Oracle中,Sequence不同于其他数据库系统的自增字段,例如SQL Server中的`...
为了实现Sequence,我们需要在Oracle数据库中创建一个序列对象,例如: ```sql CREATE SEQUENCE seq_user START WITH 1; ``` 这里创建了一个名为`seq_user`的Sequence,从1开始递增。 2. **配置MyBatis-Plus*...
#### 一、理解Oracle序列 在开始之前,首先需要了解Oracle中的序列。序列是一个数据库对象,它能够生成连续的整数序列。序列主要用于当需要为表中的某列自动生成唯一值时。例如,在插入新记录时,可以使用序列生成...
### Oracle 主键自增 Sequence 的实现与应用 #### 一、Sequence 的概念及用途 在 Oracle 数据库中,`Sequence` 是一种用于生成一系列唯一数值的对象。这些数值可以按照特定的规则递增或递减,并且可以设定是否循环...
在这个实例中,我们将深入理解如何创建、使用和管理Oracle序列,以及如何处理序列的缓存问题。 首先,我们看到用户"SCOTT"在执行SQL命令来创建两个序列——seq_emp 和 seq_dept,它们都从1开始计数。`CREATE ...
本文将详细介绍如何在不新建序列的情况下,实现Oracle序列的重置,让其从1开始增长。这种方法通过编写PL/SQL过程来动态调整序列的增量,从而达到重置的目的。 ### Oracle序列重置方法 首先,我们需要理解Oracle...
在本篇中,我们将深入探讨Oracle序列的创建、修改和删除。 ### 1. 序列的创建 创建序列的基本语法如下: ```sql CREATE SEQUENCE sequence_name START WITH n -- 起始值 INCREMENT BY n -- 增量值 MINVALUE n ...
在Oracle数据库中,Sequence是一种用于自动产生数值序列的对象。它可以生成连续的整数或者非连续的整数序列,并且可以根据需求进行递增或递减。Sequence常用于为表中的某列自动生成唯一的主键值或者作为流水号使用。...
在Java应用程序中,如果需要在MySQL环境中实现类似Oracle序列的功能,我们需要自己设计解决方案。以下是一些关键知识点的详细说明: 1. **Java连接MySQL**: - 首先,你需要使用JDBC(Java Database Connectivity...
### Oracle自增序列知识点详解 在数据库应用中,序列是一种常用的数据对象,它能够自动产生唯一的数值,常用于实现表中的主键自增功能。Oracle数据库提供了强大的序列管理功能,可以方便地创建、管理和使用序列。...
### MySQL生成Oracle序列知识点 #### 一、背景与概述 在数据库领域中,不同数据库管理系统(DBMS)之间存在显著差异,比如Oracle与MySQL在处理序列(sequence)的方式上就有本质的不同。Oracle提供了内置的支持来管理...
Oracle 数据库通过序列(Sequence)这一特性支持自增字段的实现。本文将详细介绍如何利用 Oracle 的序列功能来创建自增字段,并探讨其相关的配置选项及应用场景。 ### 创建序列 (Create Sequence) #### 基本语法与...
首先,创建一个Oracle序列(SEQUENCE)可以使用`CREATE SEQUENCE`语句。例如,创建名为`S_S_DEPART`的序列: ```sql CREATE SEQUENCE S_S_DEPART MINVALUE 1 MAXVALUE 999999999999999999999999999 START WITH 1 ...
### Oracle 创建表与序列知识点详解 #### 一、Oracle创建表的基本语法与示例解析 在Oracle数据库中,创建表是进行数据管理的基础操作之一。下面将通过几个具体实例来详细解析创建表的过程。 ##### 示例1:创建...
Oracle数据库在设计和管理大型数据系统时扮演着关键角色,其中序列(Sequence)是一种非常重要的对象,用于生成唯一的整数序列,通常用作表的主键。本篇将深入探讨Oracle数据库表序列ID自增生成器及其相关知识点。 ...
在ORACLE数据库中,序列(SEQUENCE)是使用非常频繁的一个数据库对象,但是有时候会遇到序列(SEQUECNE)跳号(skip sequence numbers)的情形,那么在哪些情形下会遇到跳号呢? 事务回滚引起的跳号 不管序列有...
在本篇文章中,我们将深入探讨Oracle序列的工作原理、创建序列的方法以及如何在插入数据时利用序列。 首先,让我们理解序列的基本概念。序列在Oracle中是一个预定义的对象,可以生成一个有序的数字流,这些数字可以...
批量修改Oracle序列值的需求可能出现在数据迁移、恢复或测试环境中,确保序列与实际数据匹配。这篇博客分享的是一个自定义的存储过程,用于批量修改Oracle序列的当前值(CURRENT VALUE)。 首先,我们需要理解...
### ORACLE SEQUENCE 的详细介绍与应用 #### 一、概述 在数据库开发和管理中,自动编号是一项常用的功能。在 SQL Server 中,我们可以通过自增字段来实现这一功能。而在 Oracle 数据库中,则使用了一个名为 **...