在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;
一旦定义了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;
结束
- 浏览: 90831 次
- 性别:
- 来自: 北京
文章分类
最新评论
发表评论
-
代码洁癖症的表现
2013-08-26 16:47 736有下列情形之一的,你患上了代码洁癖症。症状程度可轻可重,轻者 ... -
java中的vo 、dto 、dao(转自yinchunjian)
2013-08-26 15:51 1202VO是跟数据库里表的映射,一个表对应一个VO DAO是用V ... -
跨站请求伪造CSRF防护方法
2013-08-22 11:03 608CSRF(Cross-site request forger ... -
java日志框架之log4j详解
2013-06-26 22:08 2026一、 Log4j的架构 Log4j系统的三大板块:日志写 ... -
java日志框架
2013-06-26 22:04 812Log4j Apache的一个开放 ... -
同步与异步传输定义与区别
2013-06-03 16:31 788同步与异步传输的区别 ... -
HTTP状态码的含详细列表: 200:400:403:404:408:500
2013-05-28 15:07 1582http状态代码含义表: 100 - 表示已收到请求的 ... -
遍历list的几种方法
2013-05-24 15:02 822List<A> list ... -
Java 中 Listener监听器作用和过滤器的作用,以及区别
2013-05-08 15:10 79041.1 Listener对象分类Servlet的Li ... -
java程序防止sql注入
2013-04-23 11:33 2217第一种采用预编译语句集,它内置了处理SQL注入的能力 ... -
字符集和编码乱码解决方案(转)
2013-03-20 11:01 1070中文乱码:在以后学习过程中全部采用UTF-8 1、文件的乱码 ... -
Xss跨站脚本经验总结Cross Site Scripting
2013-03-20 17:52 1259最近这段时间我所在的公司让我搞一些有关网络安全方面的东西, ... -
防止SQL注入安全性解决方案(转)
2013-03-05 13:33 21271.SQL注入了解及防范 ... -
http与https的区别(转)
2013-03-05 13:31 793在URL前加https://前缀表明是用SSL加密的。你的 ... -
数据绑定总结(1)
2013-02-20 10:42 8791.@RequestParam 绑定单个请求参数值 2 ... -
Maven 环境的配置
2013-02-18 16:37 849现在Java新架构的不断出现,例如St ... -
springMVC自定义属性编辑器-转
2013-01-31 17:38 2379自定义springMVC的属性编辑器主要有两种方式,一种是使 ... -
Spring MVC 3 深入总结-转
2013-01-29 15:47 2144一、前言: 大家好,Spring3 MVC是非常优秀的M ... -
hibernate lazy机制
2013-01-25 21:38 1008hibernate的lazy怎么用 ... -
Java线程:并发协作-生产者消费者模型
2013-01-22 15:10 955对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是 ...
相关推荐
Oracle 创建自增字段方法-ORACLE SEQUENCE 的简单介绍 Oracle SEQUENCE 是一种特殊的数据库对象,用于生成一系列唯一的数值,通常用于主键或其他需要唯一标识的字段。下面将详细介绍 Oracle 创建自增字段方法-...
然后,我们使用一个PL/SQL块来遍历所有需要重置的Sequence,并根据表中的最大主键值来设置Sequence的起始值。 #### 1. 定义函数`func_getseq` ```sql CREATE OR REPLACE FUNCTION func_getseq (in_table VARCHAR2)...
为了在 Oracle 中使用 Sequence,首先需要确保拥有相应的权限,通常是 `CREATE SEQUENCE` 或者 `CREATE ANY SEQUENCE` 权限。创建 Sequence 的基本语法如下: ```sql CREATE SEQUENCE sequence_name INCREMENT BY ...
在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。 1、Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。 创建语句如下: CREATE SEQUENCE seqTest INCREMENT...
通过上面的例子,我们可以看到如何在 Oracle 中使用 `Sequence` 来实现主键自增的功能。这种方法非常适用于那些需要唯一标识符但又没有内置自增功能的情况。`Sequence` 的灵活性也使得开发者可以根据实际需求来定制...
在Oracle数据库中,由于不支持自动递增的主键策略,开发者通常会使用Sequence来生成主键值。本文将深入探讨如何在MyBatis-Plus(MP)框架中配置Oracle的主键Sequence。 首先,Oracle Sequence是Oracle数据库提供的...
在SQL Server中模拟Oracle的Sequence,一种常见方法是通过存储过程实现。一个简单的实现方式是创建一个包含四个字段的表,如"AllSequence",字段包括:名称、起始值、递增值和当前值。每当需要一个新的序列值时,从...
总的来说,使CoolSQL支持Oracle Sequence的GeneratedKey需要对数据库操作流程有深入理解,无论是通过扩展工具源码、配置、使用JDBC API还是借助ORM框架,都需要结合具体项目需求和CoolSQL的功能来选择合适的方法。...
本文将详细介绍如何在Hibernate中使用Oracle sequence,以及在使用过程中应注意的一些事项。 首先,我们来看如何为不同的表创建各自的sequence。在Oracle数据库中,你可以通过SQL语句创建一个sequence,例如: ```...
在Oracle数据库中,序列(SEQUENCE)是一种特殊的数据类型,用于生成唯一且递增的整数值,常用于主键生成或其他需要唯一标识的场景。然而,有时会出现序列跳号(skip sequence numbers)的情况,即序列值没有按照...
在Oracle数据库中,`sequence`机制是一种自动生成唯一数值序列的方法,常用于为主键字段提供连续的整数值。它类似于其他数据库系统中的自动增长字段,但在Oracle中更加灵活可控。本文将详细介绍`sequence`的基本概念...
在Oracle中,Identity功能相对较新,与Sequence类似但使用更简便。在DB2和PostgreSQL中,Identity的概念与Sequence相对应,但它们的用法和管理方式略有不同。 总的来说,Sequence在Oracle、DB2和PostgreSQL中的实现...
序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列, 序列中的可以升序生成,也可以降序生成。创建序列的语法是: 语法结构:创建序列 CREATE SEQUENCE sequence_name [START WITH ...
根据提供的文件信息,我们可以深入探讨Oracle数据库中的...通过以上的详细介绍,我们已经了解了在Oracle数据库中如何创建序列、使用各种约束以及如何解锁用户的基本方法。这些技能对于维护和管理Oracle数据库至关重要。
本文将详细介绍Oracle数据库中序列的创建、修改以及删除方法,并通过一个具体的示例来演示序列的使用。 #### 序列的基本概念 序列是一种能够按需生成连续整数的数据库对象。它可以用于自动填充某些字段,特别是当...
在Oracle数据库中,实现ID自增的一种常见方法是通过结合使用序列(Sequence)和触发器(Trigger)。这种方法非常实用,特别是在需要为表中的记录自动生成唯一标识符的情况下。 ##### 创建序列(Sequence) 首先,...
### Oracle中设置自增主键方法详解 在Oracle数据库中,自增主键是一种非常实用且常见的设计模式,它能够确保表中的每一条记录都拥有一个唯一的标识符,这对于数据的管理和查询非常重要。本文将详细介绍如何在Oracle...