- 浏览: 2864942 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (1173)
- 名言警句 (5)
- 心情随笔 (50)
- 数据库 (57)
- Java基础 (241)
- J2EE框架 (91)
- 数据结构 (12)
- 程序设计 (21)
- WEB技术 (128)
- 网络日志 (12)
- IT资讯 (247)
- linux (64)
- solaris (2)
- 其它 (143)
- WebService (4)
- 日语学习 (2)
- 机器人 (5)
- Android (5)
- cgywin (3)
- Game (1)
- DWR (1)
- spring (8)
- canvas (1)
- Guava (3)
- Modbus (5)
- 测试 (6)
- mongodb (9)
- Quartz (2)
- Cron (1)
- windows (2)
- 持续集成 (1)
- bootstrap (3)
- 结对编程 (1)
- nodejs (1)
- Netty (1)
- 安全 (3)
- webstorm (2)
- sparkline (1)
- Job (1)
- git (3)
- Maven (3)
- knockout (5)
- jquery (1)
- bower (1)
- docker (1)
- confluence (4)
- wiki (1)
- GoogleMap (1)
- jekyll (10)
- ruby (2)
- npm (3)
- browserify (1)
- gulp (3)
- openwrt (1)
- discuz (3)
- 输入法 (1)
- JPA (1)
- eclipse (2)
- IntelliJ (1)
- css (1)
- 虚拟机 (1)
- 操作系统 (1)
- azkaban (2)
- scrum (1)
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
使用Java进行串口通信 -
abababudei:
请教一下,这个您是怎么解决的:/dev/ttyS2enteri ...
Java应用程序的MODBUS通讯 -
xuniverse:
hannibal005 写道楼主,我问下 request.se ...
用javascript与java进行RSA加密与解密 -
atxkm:
找了一下午,终于找到了
gulp 拷贝文件时如何移除文件目录结构 -
kalogen:
gtczr 写道非常感谢,经过我自己的修改,已经完美实现。发出 ...
用javascript与java进行RSA加密与解密
1.基本语法
(1) 创建序列命
CREATE SEQUENCE [user.]sequence_name
[INCREMENT BY n]
[START WITH n]
[maxvalue n | nomaxvalue]
[minvalue n | nominvalue]
[CYCLE|NOCYCLE]
[CACHE|NOCACHE]
[ORDER|NOORDER]
;
INCREMENT BY: 指定序列号之间的间隔,该值可为正的或负的整数,但不可为0。序列为升序。忽略该子句时,缺省值为1。
START WITH:指定生成的第一个序列号。在升序时,序列可从比最小值大的值开始,缺省值为序列的最小值。对于降序,序列可由比最大值小的值开始,缺省值为序列的最大值。
MAXVALUE:指定序列可生成的最大值。
NOMAXVALUE:为升序指定最大值为1027,为降序指定最大值为-1。
MINVALUE:指定序列的最小值。
NOMINVALUE:为升序指定最小值为1。为降序指定最小值为-1026。
CYCLE:循环使用,用大最大值再返。 CACHE:指定cache的值。如果指定CACHE值,oracle就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。
ORDER:顺序使用序列值。
(2) 更改序列
ALTERSEQUENCE [user.]sequence_name
[INCREMENT BY n]
[MAXVALUE n| NOMAXVALUE ]
[MINVALUE n | NOMINVALUE]
[CYCLE|NOCYCLE]
[CACHE|NOCACHE]
[ORDER|NOORDER]
;
(3) 删除序列
DROP SEQUENCE [user.]sequence_name;
2. 序列的使用
序列提供两个方法,NextVal和CurrVal。
NextVal:取序列的下一个值,一次NEXTVAL会增加一次sequence的值。
CurrVal:取序列的当前值。
但是要注意的是:第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。
3.创建连续编号表 SEQUENCE + TRIGGER
3.1 创建表
create or replace table test_table
(
idd number(3),
named varchar2(20)
);
/
3.2 创建序列sequence_test_table_id:
create sequence "sequence_test_table_id" increment by 1 start with 1 minvalue 1 maxvalue 999 cycle nocache order;
3.3 创建触发器
要使用sequence,还必须用上oracle的triger(触发器)
create or replace trigger trigger_insert_sequence
before insert on test_table
referencing old as old new as new
*表明在向test_table插入每一行之前触发
for each row
begin
*读取sequence_test_table_id的下一个值赋给test_table的新idd
select sequence_test_table_id.nextval into :new.idd from dual;
exception
when others then
-- consider logging the error and then re-raise
raise;
end trigger_insert_sequence
3.4 测试
insert into test_table(named) values(sysdate);
如果,我们希望序列包含更多的信息,比如日期等,以便日后做统计用,可以吗?
当然可以!
我们可以在triger那里打主意:)
比如我们要在序列里加上日期20030225xxx,后面的xxx表示是从序列里的来值。
先要更新表:
alter table test_table modify (id number(11) ) *扩展列宽
然后修改triger
create or replace trigger trigger_insert_sequence
before insert on test_table
referencing old as old new as new
for each row begin
select to_char(sysdate,'yyyymmdd')||lpad(sequence_test_table_id.nextval,3,'0') into :new.idd from dual;
exception
when others then
-- consider logging the error and then re-raise
raise;
end trigger_insert_sequence
(1) 创建序列命
CREATE SEQUENCE [user.]sequence_name
[INCREMENT BY n]
[START WITH n]
[maxvalue n | nomaxvalue]
[minvalue n | nominvalue]
[CYCLE|NOCYCLE]
[CACHE|NOCACHE]
[ORDER|NOORDER]
;
INCREMENT BY: 指定序列号之间的间隔,该值可为正的或负的整数,但不可为0。序列为升序。忽略该子句时,缺省值为1。
START WITH:指定生成的第一个序列号。在升序时,序列可从比最小值大的值开始,缺省值为序列的最小值。对于降序,序列可由比最大值小的值开始,缺省值为序列的最大值。
MAXVALUE:指定序列可生成的最大值。
NOMAXVALUE:为升序指定最大值为1027,为降序指定最大值为-1。
MINVALUE:指定序列的最小值。
NOMINVALUE:为升序指定最小值为1。为降序指定最小值为-1026。
CYCLE:循环使用,用大最大值再返。 CACHE:指定cache的值。如果指定CACHE值,oracle就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。
ORDER:顺序使用序列值。
(2) 更改序列
ALTERSEQUENCE [user.]sequence_name
[INCREMENT BY n]
[MAXVALUE n| NOMAXVALUE ]
[MINVALUE n | NOMINVALUE]
[CYCLE|NOCYCLE]
[CACHE|NOCACHE]
[ORDER|NOORDER]
;
(3) 删除序列
DROP SEQUENCE [user.]sequence_name;
2. 序列的使用
序列提供两个方法,NextVal和CurrVal。
NextVal:取序列的下一个值,一次NEXTVAL会增加一次sequence的值。
CurrVal:取序列的当前值。
但是要注意的是:第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。
3.创建连续编号表 SEQUENCE + TRIGGER
3.1 创建表
create or replace table test_table
(
idd number(3),
named varchar2(20)
);
/
3.2 创建序列sequence_test_table_id:
create sequence "sequence_test_table_id" increment by 1 start with 1 minvalue 1 maxvalue 999 cycle nocache order;
3.3 创建触发器
要使用sequence,还必须用上oracle的triger(触发器)
create or replace trigger trigger_insert_sequence
before insert on test_table
referencing old as old new as new
*表明在向test_table插入每一行之前触发
for each row
begin
*读取sequence_test_table_id的下一个值赋给test_table的新idd
select sequence_test_table_id.nextval into :new.idd from dual;
exception
when others then
-- consider logging the error and then re-raise
raise;
end trigger_insert_sequence
3.4 测试
insert into test_table(named) values(sysdate);
如果,我们希望序列包含更多的信息,比如日期等,以便日后做统计用,可以吗?
当然可以!
我们可以在triger那里打主意:)
比如我们要在序列里加上日期20030225xxx,后面的xxx表示是从序列里的来值。
先要更新表:
alter table test_table modify (id number(11) ) *扩展列宽
然后修改triger
create or replace trigger trigger_insert_sequence
before insert on test_table
referencing old as old new as new
for each row begin
select to_char(sysdate,'yyyymmdd')||lpad(sequence_test_table_id.nextval,3,'0') into :new.idd from dual;
exception
when others then
-- consider logging the error and then re-raise
raise;
end trigger_insert_sequence
发表评论
-
幻读,重复读,脏读 以及Spring的事务属性说明
2015-07-14 16:45 6159设置事务隔离性级别 1)幻读:事务1读取记录时事务 ... -
安装完MySQL 后必须调整的 10 项配置
2015-06-01 13:27 1339当我们被人雇来监测MyS ... -
centos用yum安装mongodb
2015-03-04 09:23 723一、配置yum包管理文件 创建文件/etc/y ... -
提升MongoDB安全性的十个技巧
2015-03-03 16:08 670MongoDB提供了一系列组件来提升数据的安全性。数据安全 ... -
Compound indexes support in MongoDB
2014-03-13 10:00 892Compound indexes support queri ... -
Mongodb与spring集成 MongoRepository实现增删改查和复杂查询
2014-03-11 08:44 4760与HibernateRepository类似,通过继承Mo ... -
How to use hsqldb to test DB operation
2014-01-10 15:17 953sometime we want to test dao o ... -
How to test Mongodb by Spring MongoTemplate
2013-11-21 15:01 3527here is the example: 1. model ... -
NOSQL数据库大比拼:Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase
2013-11-15 18:20 1728话说,尽管 SQL 数据库一直是我们IT行业中最有用的工具, ... -
MongoDB在windows下的安装与基本配置
2013-11-05 11:12 1013installation and configuration ... -
BoneCP的使用
2013-09-08 14:47 1933在介绍怎么使用之前,先来看看BoneCP的特性(Featur ... -
重新创建PostgreSQL服务
2013-08-26 16:58 912之前在pgAdmin中删除掉了“服务器”,当自己手动创建一个 ... -
postgresql环境变量配置
2013-08-15 08:59 1516Strictly speaking, this is no ... -
Java 程序员在写 SQL 程序时候常犯的 10 个错误
2013-08-13 07:28 893Java程序员编程时需要混合面向对象思维和一般命令式编程的 ... -
安装 postgresql 报错 "An error occured executing the Microsoft VC++ runtime installe
2013-08-12 10:01 1484安装 postgresql 报错 "An erro ... -
win7 64安装 oracle Client
2013-05-08 15:44 2375操作系统:win7 旗舰版 for 64bit oracl ... -
The Best Way to Save/Import Toad Settings
2013-05-07 16:58 987On the Toad list, a poster ask ... -
20 个数据库设计最佳实践
2012-02-22 23:01 1184使用明确、统一的标明和列名,例如 School, ... -
学习v$librarycache视图
2012-01-10 19:58 2563通过查看v$librarycache视 ... -
Oracle中各个命中率的总结及调优笔记整理
2012-01-09 17:09 1463关于Oracle中各个命中率的计算以及相关的调优 1 ...
相关推荐
### Oracle数据库中序列的使用 在Oracle数据库管理中,序列是一种非常实用的对象,它能够自动生成唯一的数值。这种特性使得序列在很多应用场景中都极为重要,比如为表中的记录自动分配唯一标识符(如主键)。本文将...
本文将详细介绍如何在不新建序列的情况下,实现Oracle序列的重置,让其从1开始增长。这种方法通过编写PL/SQL过程来动态调整序列的增量,从而达到重置的目的。 ### Oracle序列重置方法 首先,我们需要理解Oracle...
在Java应用程序中,如果需要在MySQL环境中实现类似Oracle序列的功能,我们需要自己设计解决方案。以下是一些关键知识点的详细说明: 1. **Java连接MySQL**: - 首先,你需要使用JDBC(Java Database Connectivity...
为了在MySQL中实现类似于Oracle序列的功能,可以通过创建一张特殊的表和几个自定义函数来实现。这种方法可以有效地模拟Oracle序列的行为,并能够根据指定的步长和长度来生成数值。 ##### 2.1 创建模拟序列的表 在...
4. **在应用程序中使用序列** 在Oracle PL/SQL或类似的应用程序环境中,通常通过查询`DUAL`表来获取序列的下一个值。例如,在PB(PowerBuilder)中,可以使用以下方式获取序列号: ```sql SELECT exam_no_seq....
##### 使用序列插入数据 ```sql INSERT INTO position VALUES (id.NEXTVAL - 1, '116', '39'); ``` - **`id.NEXTVAL`**:获取序列的下一个值。 ##### 查询序列的下一个值 ```sql SELECT id.NEXTVAL FROM dual; `...
当你需要在新的环境中使用这些序列时,只需在目标数据库上运行该SQL脚本即可。例如,假设你已经将`employee_seq`的导出文件命名为`employee_seq_export.sql`,你可以使用以下命令导入: ```sql @employee_seq_...
### Oracle 使用序列创建自增字段 在数据库设计与开发中,自增字段是十分常见的需求之一,尤其是在需要为每一行记录自动分配一个唯一编号的情况下。Oracle 数据库通过序列(Sequence)这一特性支持自增字段的实现。...
### 二、Oracle序列 序列是Oracle提供的一种自动生成唯一数值的机制,常用于为主键或需要唯一标识符的列自动分配值。在实验中,虽然没有明确展示序列的创建与使用,但可以利用`CREATE SEQUENCE`语句来创建一个序列...
总结来说,Oracle序列是实现主键自增的有效工具,通过创建和管理序列,可以确保数据的唯一性和有序性。在实际应用中,应根据具体需求调整序列的参数,如步长、缓存大小等,以优化性能和满足业务逻辑。
Oracle序列是数据库中用于生成唯一标识符的一种机制,它们在数据表中经常被用来作为主键或外键,确保数据的唯一性和完整性。在Oracle数据库系统中,序列(Sequences)提供了一种自动递增或递减数值的方式,这对于...
在本篇中,我们将深入探讨Oracle序列的创建、修改和删除。 ### 1. 序列的创建 创建序列的基本语法如下: ```sql CREATE SEQUENCE sequence_name START WITH n -- 起始值 INCREMENT BY n -- 增量值 MINVALUE n ...
批量修改Oracle序列值的需求可能出现在数据迁移、恢复或测试环境中,确保序列与实际数据匹配。这篇博客分享的是一个自定义的存储过程,用于批量修改Oracle序列的当前值(CURRENT VALUE)。 首先,我们需要理解...
Oracle数据库提供了强大的序列管理功能,可以方便地创建、管理和使用序列。本文将详细介绍如何在Oracle数据库中创建自增序列,并深入探讨其相关属性和应用场景。 #### 一、什么是Oracle自增序列? Oracle自增序列...
#### 一、理解Oracle序列 在开始之前,首先需要了解Oracle中的序列。序列是一个数据库对象,它能够生成连续的整数序列。序列主要用于当需要为表中的某列自动生成唯一值时。例如,在插入新记录时,可以使用序列生成...
本文将深入探讨这两者,并展示如何在实践中使用它们。 **一、Oracle序列** 序列是一种特殊类型的数据库对象,它可以生成唯一的整数序列,常用于为数据库表的主键字段提供自动递增的值。序列的主要属性包括: 1. *...
这个触发器会在每条新记录插入`MY_TABLE`时,从`MY_SEQ`序列中获取下一个值,并将其设置为新记录的`ID`。 使用"Oracle自增序列和触发器生成工具",你可以省去手动编写这些SQL语句的步骤。只需输入相关的表结构信息...
将ORACLE数据库中的序列更新到所使用到的大小,适用于导入数据库后序列重复问题
--使用序列 insert into user_table(user_id,user_name,user_pwd) vlaues(seq_user.nextval,'tcy','tcy'); --修改序列 alert sequence seq_user increment by 5 maxvalue 100000 nocycle nocache;