Oracle重置序列】的更多相关文章

原文 oracle 重置序列从指定数字开始的方法详解 重置oracle序列从指定数字开始 declare n ); v_startnum ):;--从多少开始 v_step ):;--步进 tsql ); v_seqname ):='MIP_JF_SEQUENCE';--序列名 begin execute immediate 'select '||v_seqname||'.nextval from dual' into n; n:=v_startnum-n-v_step;--从10000001开…
Oracle中一般将自增sequence重置为初始1时,都是删除再重建,这种方式有很多弊端,依赖它的函数和存储过程将失效,需要重新编译.不过还有种巧妙的方式,不用删除,利用步长参数,先查出sequence的nextval,记住,把递增改为负的这个值(反过来走),然后再改回来. 假设需要修改的序列名:seq_name 1.select seq_name.nextval from dual; //假设得到结果5656 2.alter sequence seq_name increment by -5…
oracle序列创建以后,如果想重置序列从 0 开始,逐渐递增1,可以采用如下存储过程: create or replace procedure reset_seq( p_seq_name in varchar2 ) is l_val number; begin execute immediate 'select ' || p_seq_name || '.nextval from dual' INTO l_val; execute immediate 'alter sequence ' || p…
Oracle将自增sequence重置为初始值1时,若是删除再重建,那么依赖它的函数和存储过程将失效,需要重新编译. 这里利用相反的过程,利用负值步长参数,将递增值改为(sequence.NEXTVAL),然后再改回来. 假设需要修改的序列名:seq_name .select seq_name.nextval from dual; //假设得到结果5656 .; ) .select seq_name.nextval from dual;//再查一遍,走一下,重置为1了 .;//还原 以下是存储过…
Oracle中一般将自增sequence重置为初始1时,都是删除再重建,这种方式有很多弊端,依赖它的函数和存储过程将失效,需要重新编译. 不过还有种巧妙的方式,不用删除,利用步长参数,先查出sequence的nextval,记住,把递增改为负的这个值(反过来走),然后再改回来. 假设需要修改的序列名:seq_name .select seq_name.nextval from dual; //假设得到结果5656 . ; ) . select seq_name.nextval from dual…
序列是oracle用来生产一组等间隔的数值.序列是递增,而且连续的.oracle主键没有自增类型,所以一般使用序列产生的值作为某张表的主键,实现主键自增.序列的编号不是在插入记录的时候自动生成的,必须调用序列的方法来生成(一般调用nextval方法).我们也可以编写表的insert触发器来进自动生成. 创建语法: create sequence 序列名称[start with 初始量] [increment by 递增量] [maxvalue 最大值| nomaxvalue] [minvalue…
MySQL实现类似Oracle的序列 2013-10-22 10:33:35     我来说两句      作者:走过的足迹 收藏    我要投稿 MySQL实现类似Oracle的序列   Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的: 但在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长.开始索引.是否循环等:若需要迁移数据库,则对于主键这块,也是个头大的问题. 本文记录了一个模拟Oracle序列的…
Oracle的序列 序列介绍 序列是Oracle提供的用于产生一系列唯一数字的数据库对象. 使用序列能够实现自己主动产生主键值.序列也能够在很多用户并发环境中使用.为所实用户生成不反复的顺序数字,并且不须要不论什么额外的I/O开销. 与视图一样.序列并不占用实际的存储空间,仅仅是在数据字典中保存它的定义信息.用户要在自己的模式中创建序列.必须具有CREATE SEQUECNCE系统权限,假设要在其它模式中创建序列,则必须具有CREATE ANY SEQUENCE系统权限. 创建序列的语法例如以下…
oracle导出序列的几种办法 注:本文来源于<oracle导出序列的几种办法> 方法一: select 'create sequence ' ||sequence_name|| ' minvalue ' ||min_value|| ' maxvalue ' ||max_value|| ' start with ' ||last_number|| ' increment by ' ||increment_by|| ( case when cache_size= 0 then ' nocache…
Oracle中序列的操作以及使用前对序列的初始化   一 创建序列 create sequence myseq start with 1 increment by 1 nomaxvalue minvalue 1   二 初始化序列   select myseq.nextval from dual; 这里值得注意的是,如果先直接写select myseq.currval from dual,会提示会提示myseq.currtval尚未在此会话中定义.    www.2cto.com   三 使用序…
-- Oracle创建序列 Create sequence CREATE SEQUENCE SEQ_SINGER -- 序列名称  START WITH 2 -- 开始数字  MAXVALUE 9999 -- 最大值   MINVALUE 2 -- 最小值   INCREMENT BY 1 -- 增量(每次增长的数字)   CYCLE -- 是否循环,就是说如果增加到预设的最大值之后是否从起始序列值重新开始.如果不需要就取消这个属性,执行的话默认就是循环. ; COMMIT;…
业务需求是:二元化编号规则:RYH+年月+001(开始),按月计算,每月1号重置为001 数据库中已有序列和函数如下: 解决方法:采用Oracle定时任务,每月1号重置该序列从1开始增长,SQL如下: select GET_RYH_NO from dual; select SEQ_RYH_NO_ID.NEXTVAL from dual; select * from user_jobs;/*查询定时任务*/ /*新建每月01号重置二元化序列为1起始的存储过程*/ CREATE OR REPLACE…
概念: 所谓序列,在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序的数据列的值都不重复. 1.序列可以自动生成唯一值 2.是一个可以被共享的对象 3.典型的用来生成主键值的一个对象 4.可以替代应用程序代码 5.当sequence的值存放在缓存中时可以提高访问效率. 创建序列语法: CREATE SEQUENCE name [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n |…
  Oracle 序列(Sequence)主要用于生成流水号,在应用中经常会用到,特别是作为ID值,拿来做表主键使用较多. 但是,有时需要修改序列初始值(START WITH)时,有同仁使用这个语句来修改:alter sequence sequencename start with xxxxxxxx.但是,在Oracle DB中,修改序列没有这样的语法.下面介绍几种修改方式: 1.先删除序列,然后重新创建.不过这不是当前要讲的重点.这个方法比较暴力,也比较方便,如果序列有在用,会影响应用的正常使…
出现 ORA-08002: 序列XXXXXXX.CURRVAL 尚未在此进程中定义. 导致原因:因为是首次查询序列的当前值,内存中之前并没有缓存序列的任何值,所以需要先查询 一下序列的下一个值(此时,Oracle会自动缓存已查询的序列值),再查询序列的当前值. XXXXXXX.CURRVAL 只有在访问了XXXXXXX.NEXTVAL时才有效如select XXXXXXX.NEXTVAL from dual;select XXXXXXX.CURRVAL from dual;而直接select X…
select t.*, t.rowid from tbl_type t order by t.id desc Select SEQ_TBL_TYPE_ID.NextVal From Dual; ; ; Select SEQ_TBL_TYPE_ID.currVal From Dual; DROP SEQUENCE SEQ_TBL_TYPE_ID; CREATE SEQUENCE SEQ_TBL_TYPE_ID; Oracle中创建.修改.删除序列 ORACLE没有象SQL SERVER中一样的自增…
Oracle中的自增,不如Sql server那般方便. --.创建序列 CREATE SEQUENCE "TABLE_NAME"."SQ_NAME" MINVALUE MAXVALUE -- 定义列的步长,默认为1 INCREMENT BY -- 定义序列的起始值,默认为1 START CACHE NOORDER NOCYCLE ; --.创建触发器 CREATE OR REPLACE TRIGGER "TR_NAME" BEFORE INSE…
Oracle 序列(Sequence)主要用于生成主键.但是,有时需要修改序列初始值(START WITH)时,好多人凭感觉认为:Alter Sequence SequenceName Start With N.事实上,在Oracle Db中,修改序列没有这样的语法. 1.先删除序列,然后重新创建.不过这不是当前要讲的重点.这个方法比较方便. 2.通过Increment By来实现修改初始值. 例如:若序列名称是BASE_LOG_SEQ,初始值是12,而现在要设置初始值为1024,Increme…
一个问题: 在某张表中,存在一个id列(整数),我们希望在添加记录的时候,该列从1开始,自动的增长,怎么处理? 解决方式:oracle是利用"序列"(sequence)来完成的. 序列(sequence)介绍 oracle中,是通过使用序列(sequence)来处理自动增长列. (1)可以为表中的列自动产生值. (2)由用户创建数据库对象,并可由多个用户共享. (3)一般用于主键或唯一列. 创建序列基本语法: create sequence 序列名称 start with 开始数字 i…
在设计数据库的时候,Oracle中没有类似SQL Server中系统自动分配ID作为主键的功能,这时Oracle可以通过“序列”和“触发器”来实现ID自动增加的功能. 1.创建序列Sequence create sequence seq_uid increment start nomaxvalue nocycle cache ; 其中:"seq_uid"表示自定义的序列名称: "start with 1"表示序列值从1开始: "increment by 1…