- 浏览: 2307128 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (314)
- JAVA基础知识 (54)
- Java-IO/FIle (16)
- Java-JDBC (4)
- JAVA-新增特性-注解 (3)
- Java-枚举 (2)
- Java-泛型 (1)
- Java-多线程 (15)
- Java-XML (4)
- Java-JMS(消息服务) (4)
- Java-JVM (0)
- Web Service服务 (7)
- Jsp (10)
- js (18)
- Struts框架 (11)
- Spring框架 (29)
- Hibernate框架 (28)
- Spring Boot框架 (2)
- ExtJS前端框架 (29)
- Jquery js库 (8)
- JUnit框架 (8)
- Selenium 测试 (1)
- NoSql---Redis (6)
- ORACLE数据库 (45)
- MySQL数据库 (4)
- tomcat (3)
- Nginx反向代理服务器 (4)
- web应用服务器通用知识 (3)
- 开发工具IDE (14)
- UML建模 (1)
- SVN CVS 版本管理 (6)
- git 分布式版本管理 (4)
- 报表设计 (5)
- 文件上传下载 (2)
- 数据算法 (1)
- 存储过程 (5)
- JSON 相关 (1)
- OGNL表达式 (3)
- Util工具包 (9)
- 设计模式 (15)
- linux 相关 (3)
- life think (3)
- 工作流管理框架 (1)
- 大数据-Hadoop (1)
最新评论
-
huih:
很不错的文章
SpringMVC+Hibernate+Spring 简单的一个整合实例 -
calm01:
学习了.
Spring <bean>标签属性 Autowire自动装配(转载) -
lizhenlzlz:
我的也是拦截不了service层
SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)(转载) -
josh_123:
讲的不错,很详细,如果quartz定时任务类采用不继承任何类的 ...
Spring,jdk定时任务的几种实现以及任务线程是串行还是并行执行(转载) -
human_coder:
你知道eclipse调试怎么可以回调吗?有时候总是调快了,不能 ...
Debug---Eclipse断点调试基础
先假设有这么一个表:
create table S_Depart (
DepartId INT not null,
DepartName NVARCHAR2(40) not null,
DepartOrder INT default 0,
constraint PK_S_DEPART primary key (DepartId)
);
在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; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
针对S_Depart创建的sequence如下:
create sequence S_S_DEPART
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
nocache;
一旦定义了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 S_Depart(departId,Departname,Departorder)values(S_S_Depart.Nextval,'12345',1);
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 的例子
ALTER SEQUENCE emp_sequence
INCREMENT BY 10
MAXvalue 10000
CYCLE -- 到10000后从头开始
NOCACHE ;
影响Sequence的初始化参数:
SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。
可以很简单的Drop Sequence
DROP SEQUENCE order_seq;
一个简单的例子:
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 S_Depart --S_Depart 是表名
for each row
declare
nextid number;
begin
IF :new.DepartId IS NULLor :new.DepartId=0 THEN --DepartId是列名
select SEQ_ID.nextval --SEQ_ID正是刚才创建的
into nextid
from sys.dual;
:new.DepartId:=nextid;
end if;
end tri_test_id;
OK,上面的代码就可以实现自动递增的功能了。
发表评论
-
oracle 动态执行命令execute immediate
2016-06-12 17:42 3453可以使用execute immediate来动态执SQL语 ... -
Oracle表与索引的分析及索引重建(转载)
2015-04-27 17:08 3312Oracle表与索引的分析及索引重建 2010年1 ... -
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和总结(转载)
2015-04-15 16:36 8343在web开发中,避免不了对日期的操作,就几种常见的日期操作 ... -
jdbc连接数据库使用sid和service_name的格式区别(转载)
2015-04-10 10:25 4001最近使用jdbc连接oracle时报错: ORA-1250 ... -
oracle 执行计划为什么不走hash join?(转载)
2015-04-07 14:34 5577今天,某省的同事来告诉我,表重组后,他用于统计的一个sql脚 ... -
详细介绍ORACLE sqlplus命令(转)
2015-04-03 10:05 2037一、ORACLE的启动和关闭1、在单机环境下要想启动或关 ... -
oracle sqlplus登陆命令(转载)
2015-04-03 09:59 4342oracle sqlplus登陆命令 首先,进入 ... -
Oracle ORA-01555快照过旧的错误(转载)
2015-02-25 16:31 3022第一篇文章: 首先 ... -
oracle创建分区表,以及非分区表转分区表(转载)
2015-01-22 17:14 3396什么是分区表,分区表详解:http://langgufu. ... -
oracle游标详解
2015-01-15 16:55 5208Oracle游标循环 第一种使用loop 循环 ... -
Oracle调优总结--2(经典实践 重要)
2014-11-24 15:43 1013Oracle SQL性能优化 (1 ... -
解读Oracle执行计划
2014-11-19 17:10 5149本篇解释执行计划中基本项的含义 关于生成和显示Oracle ... -
Oracle 执行计划(Explain Plan) 说明
2014-11-19 17:10 54596如果要分析某条SQL的性能问题,通常我们要先看SQL的执 ... -
oracle导出excel 方法总结
2014-11-19 11:38 8909oracle导出excel 一、oracle导出exce ... -
oracle translate()详解+实例(替换字符函数)+rpad()填充函数
2014-10-28 16:19 2409一、语法: TRANSLATE(string,from ... -
oracle根据已有表及数据创建表分区并导入数据
2014-10-21 17:05 62oracle根据已有表及数据创建表分区并导入数据 假 ... -
ORACLE 普通表转换成分区表(在线重定义方法详解 转载)
2014-10-21 17:01 5511什么是分区表,分区表详解:http://langguf ... -
Oracle中的不等于号(转)
2014-07-29 16:02 1207今天碰到一个Oracle不等 ... -
oracle 自定义类型 type / create or replace type (转载)
2014-07-17 15:21 16877<!--正文 begin--> 一: ... -
【转】oracle存储过程导出表数据为TXT文件【全表字段】
2014-05-07 17:33 4426-****************************** ...
相关推荐
Oracle 创建自增字段方法-ORACLE SEQUENCE 的简单介绍 Oracle SEQUENCE 是一种特殊的数据库对象,用于生成一系列唯一的数值,通常用于主键或其他需要唯一标识的字段。下面将详细介绍 Oracle 创建自增字段方法-...
本篇文章将详细介绍Oracle如何创建、使用、修改以及删除自增字段所用到的SEQUENCE。 首先,创建一个Oracle序列(SEQUENCE)可以使用`CREATE SEQUENCE`语句。例如,创建名为`S_S_DEPART`的序列: ```sql CREATE ...
本文将详细介绍几种主流数据库系统中的自增字段创建方法,包括 DB2、Oracle、MySQL、PostgreSQL、SQL Server 和 Sybase。 #### DB2 DB2 支持通过 `GENERATED ALWAYS AS IDENTITY` 属性来创建自增字段。这种方式...
本文将详细介绍如何利用 Oracle 的序列功能来创建自增字段,并探讨其相关的配置选项及应用场景。 ### 创建序列 (Create Sequence) #### 基本语法与示例 在 Oracle 中,序列是一个用于生成一系列数字的对象,通常...
先假设有这么一个表: 代码... 在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREAT
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自增主键设置方法 在Oracle数据库中,自增主键是一种常见的主键设计方式,它能够确保每条记录的唯一性,并且在插入新记录时自动递增,简化了数据管理流程。本文将详细介绍如何在Oracle中设置自增主键。 ...
下面我们将详细介绍如何利用Oracle的Sequence和Trigger创建自增字段。 1. **Sequence**: Sequence是Oracle数据库中用于生成唯一整数序列的数据库对象。它能够按照预定义的步长递增或递减,并且可以设置最小值、...
### Oracle 主键自增 Sequence 的实现与应用 #### 一、Sequence 的概念及用途 在 Oracle 数据库中,`Sequence` 是一种用于生成一系列唯一数值的对象。这些数值可以按照特定的规则递增或递减,并且可以设定是否循环...
在 Oracle 数据库中,与许多其他关系型数据库系统不同,它并没有内置的自动自增字段类型,例如 MySQL 的 `AUTO_INCREMENT` 或 SQL Server 的 `IDENTITY`。但是,Oracle 提供了序列(Sequences)和触发器(Triggers)...
在Oracle数据库中,自增字段通常通过序列(Sequence)和触发器(Trigger)来实现。本篇文章将详细解释如何创建一个自增字段,并通过具体的步骤和代码示例来进行说明。 #### 序列(Sequence) 序列是一种数据库对象...
下面将详细介绍如何通过序列(Sequence)和触发器(Trigger)来实现在Oracle中创建自增的主键。 #### 序列(Sequence) 序列是一种自动产生数值的数据库对象。它可以被用来生成唯一的、连续的整数或浮点数。序列...
然而,如果你的环境是Oracle 11g或更早的版本,你将需要使用序列(Sequence)和触发器(Trigger)来模拟自增字段的行为。序列是Oracle中用于生成唯一整数的数据库对象,而触发器则是在特定数据库事件(如插入操作)...
本文将详细介绍如何利用Oracle提供的`SEQUENCE`和`TRIGGER`来实现自增主键。 #### 一、概述 在关系型数据库设计中,主键是非常重要的组成部分,它用于唯一标识表中的每一行记录。对于某些应用场景来说,手动为每条...
本文将详细介绍如何通过简单三步实现Oracle字段自增。 第一步:创建一个表 首先,我们需要创建一个包含自增字段的表。在Oracle中,没有内置的自动递增字段类型,但我们可以通过定义一个数字类型的字段并结合序列来...
**前端开源库-Gulp-Run-Sequence** 在前端开发中,构建流程自动化是提高效率的关键。Gulp 是一个流行的 JavaScript 打包工具,它允许开发者通过编写任务来自动化常见的前端工作,如编译 CSS、压缩 JS、处理图片等。...
oracle 实现自增;使用sequence,和trigger实现表字段自增