oracle的序列号(sequence)

Oracle的自增列,要采用序列号(sequence)。

初始化阶段要手动建立一个sequence,然后插入的时候,还要手动自己去读这个sequence的nextval赋给相关字段,如ID,麻烦的很。好处就是记录插入前,我们就知道这个ID值了,在处理主从表时,有时还比较方便。但这个对sql server来说,也不是问题,可以获得的。

oracle这个序列号,还有个高速缓存这么个东东,默认是一次性生成20个,没用完可能就丢了,可能造成ID不连贯。更有甚者,有时可能会引起误解。

好比说,我有个存储过程,里面用到了序列号。

然后这个存储过程,既可以手动执行,也可以托付给作业(JOB)执行。因为有高速缓存,作业都是先拿了20个,按照自己的节奏去插入;如果还记录时间戳的话,你会发现,怎么有些ID值小的,其执行时间却是最新的?原因即在此,ID与印象中的顺序不符合。

这样的话,ID就失去时间关联的参照属性了,还干脆使用GUID来做主键好了。GUID的话,表跨数据库都可以啊。但SQL SERVER中,好像就没有这个问题。

http://www.woaipu.com/shops/zuzhuan/61406
http://nanning.xjwy.cn/f/bencandy.php?fid=43&id=117777
http://nanning.xjwy.cn/f/bencandy.php?fid=43&id=117890
http://nanning.xjwy.cn/f/bencandy.php?fid=43&id=117994
http://nanning.xjwy.cn/f/bencandy.php?fid=43&id=118376

时间: 2024-10-12 19:18:31

oracle的序列号(sequence)的相关文章

ORACLE VIEW和SEQUENCE的用法

说下oracle中视图和序列的用法: 视图 视图是通过对一个或多个表定义查询得到的,视图定义所依据的表被称为基表,说简单点就是视图联合一张或多张表另外成立一张表,可以对这张表进行搜素和DML操作. 建立视图 create view terminal_view as (select a.terminal_name, b.pdline_name,c.process_name,d.stage_name,e.emp_name,A.UPDATE_TIME from sys_terminal a , sys

【转】Oracle数据库中Sequence的用法

在Oracle数据库中,sequence等同于序列号,每次取的时候sequence会自动增加,一般会作用于需要按序列号排序的地方. 1.Create Sequence (注释:你需要有CREATE SEQUENCE或CREATE ANY SEQUENCE权限) CREATE SEQUENCE emp_sequence INCREMENT BY 1 —— 每次加几个 START WITH 1 —— 从1开始计数 NOMAXVALUE —— 不设置最大值 NOCYCLE —— 一直累加,不循环 CA

【Oracle】序列Sequence对象的使用

************************************************************************   ****原文:blog.csdn.net/clark_xu 徐长亮的专栏 ************************************************************************ 序列:oracle可以通过序列来生成主键 1. 创建序列 create table Foo ( foo_id number(11)

oracle中的sequence

1.什么是sequence?在oracle中sequence就是序号,每次取的时候它会自动增加.sequence与表没有关系.2.sequence的作用?当需要建立一个自增字段时,需要用到sequence3.用sequence的优点.缺点,及不用sequence时该怎么办?4.sequence的基本用法?(1)创建CREATE SEQUENCE SEQUENCENAMEminvalue:序列最小值maxvalue/nomaxvalue:序列最大值/没有最大值start with 1:序列从1开始

Oracle 12C -- 基于sequence的列的默认值

12C支持先创建一个sequence,然后再将该sequence指定为某个列的值的默认表达式. 和"identity column"具有以下不同点: ·对列的个数没有限制 ·sequence必须在列定义之前定义 ·如果删除了sequence,会导致后面的insert报错 ·表的owner,和使用者对该sequence必须有select权限 ·可以手动插入.更新该列(不使用sequence产生的值) SQL> drop sequence test_seq; SQL> crea

Oracle中Sequence使用

Oracle提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方. 下面介绍一下关于sequence 的生成,修改,删除等常用的操作: 1. 创建 Sequence 使用如下命令新建sequence(用户需要有CREATE SEQUENCE 或者CREATE ANY SEQUENCE权限): CREATE  SEQUENCE test_sequence  INCREMENT  BY   1   --  每次加的个数据   START  WITH

Oracle修改序列(Sequence)起始值的方法

Oracle修改序列(Sequence)起始值的方法 Oracle 序列(Sequence)主要用于生成流水号,在应用中经常会用到,特别是作为ID值,拿来做表主键使用较多. 但是,有时需要修改序列初始值(START WITH)时,有同仁使用这个语句来修改:alter sequence sequencename start with xxxxxxxx.但是,在Oracle DB中,修改序列没有这样的语法.下面介绍几种修改方式: 1.先删除序列,然后重新创建.不过这不是当前要讲的重点.这个方法比较暴

hibernnate 使用Oracle的sequence为对象生成主键 自增50的问题

前段时间在做一个SSH的项目,使用Oracle中的sequence作为对象表的主键生成策略,在数据库中已经配置好了sequence的步长为1,可是在运行测试时,发现主键ID每次增加的步长是50. 奇怪之余Google一下,找到如下的解决方案,在对实体类的ID进行注解时,加上一句"allocationSize=1",例如对表EL的主键配置了一个序列叫"EL_SEQ",那么在getId方法上面使用如下注解即可解决. @SequenceGenerator(name=&qu

浅谈MyBatis-Plus学习之Oracle的主键Sequence设置

一.Oracle的主键Sequence设置简介 在Oracle数据库中不支持主键自增策略,它是通过Sequence序列来进行完成的,因此需要在MP中进行相关配置 二.相关配置如下 2.1.pom.xml 添加相关依赖 注意:由于oracle的授权问题,没办法从maven仓库中下载,因此可以手动从oracle官网中下载,并本地打包到仓库中 <!-- Oracle驱动: 因为Oracle授权的问题,不能从Maven的仓库中下载到Oracle驱动 --> <dependency> <