【异常】Oracle 序列步长问题

问题: 数据库中客户表的ID 变化为 21\31\41 有序数字,而不是1\2\3 依次增长 

[问题原因]:
SEQ_CUSTOMNOTEEN 设置了缓存20,每次取20个数,然后一个一个给你,如果中间有一段时间不操作,没用完的就丢了。
-- Create sequence
create sequence SEQ_CUSTOMNOTEEN
minvalue 1
maxvalue 9999999999999999
start with 1
increment by 1
cache 20;

[解决方法] 将缓存设置成1时候没有问题,但这时候已经失去了缓存的意义。不需要缓存时也可以设置成0
时间: 2024-11-08 20:11:36

【异常】Oracle 序列步长问题的相关文章

oracle 序列 详解

序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l  自动提供唯一的数值 l  共享对象 l  主要用于提供主键值 l  将序列值装入内存可以提高访问效率 创建序列: 1.  要有创建序列的权限 create sequence 或 create any sequence 2.  创建序列的语法 CREATE SEQUENCE sequence  //创建序列名称        [INCREMENT BY n]  //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1

ORACLE序列的使用总结

1.创建序列ORACLE序列的语法格式为: CREATE SEQUENCE 序列名[INCREMENT BY n][START WITH n][{MAXVALUE/ MINVALUE n|NOMAXVALUE}][{CYCLE|NOCYCLE}][{CACHE n|NOCACHE}]; 1)INCREMENT BY用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的. 2)START WITH 定义序列的初始值(即产生的第一个值),默认为1. 3)

Oracle序列使用:建立、删除

在开始讲解Oracle序列使用方法之前,先加一点关于Oracle client sqlplus的使用,就是如果执行多行语句的话一定要加“/”才能表示结束,并执行!本篇文章的主题是通过创建Oracle序列和触发器实现表的主键自增. 1.首先创建序列,Oracle序列的语法格式为:CREATE SEQUENCE 序列名[INCREMENT BY n][START WITH n][{MAXVALUE/ MINVALUE n|NOMAXVALUE}][{CYCLE|NOCYCLE}][{CACHE n|

SQL server 和Oracle 序列

1,SQL Server序列创建与使用 BEGIN IF EXISTS (SELECT * FROM sysobjects WHERE name = 'event_seq') DROP SEQUENCE event_seq END CREATE SEQUENCE event_seq MINVALUE 1 MAXVALUE 999999999999999999 START WITH 1 INCREMENT BY 1 CACHE 20; --使用时 GO select next value for

触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证--Oracle序列

程序开发时报错:触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证打开触发器的定义,执行其中的语句,发现序列 U_USER_INFO_SEQ 未定义.什么是序列呢?序列相当于sqlserver中那些自增的id,有步长.最大值.最小值等属性.在Oracle中是自定义的. 本篇文章的主题是通过创建Oracle序列和触发器实现表的主键自增. 1.首先创建序列,Oracle序列的语法格式为:CREATE SEQUENCE 序列名[INCREMENT BY n][START WITH

oracle序列的创建、删除和使用

创建序列 create sequence TEST --序列名minvalue 1 --定义序列生成器能产生的最小值.选项NOMAXVALUE是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,--最小值是1.maxvalue 999999999999999999999999999 --定义序列生成器能产生的最大值.选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增Oracle序列,系统能够产生的最--大值是10的27次方;对

oracle序列的两个参数:nextval和currval简介

oracle序列的两个参数:nextval和currval 我将通过下面的一个实例来体现两个参数的区别 创建个序列: 注:在调用currval的值前,必须先调用nextval的值,否则会报错,如下图中所示: 从上图中我们可以看到,在多次调用时nextval的值会继续增加 在上图中我们可以看到currval的值在会话中多次调用时,还是和自身会话的当前值一样所以nextval的值是每调用一次就增加一次:currval的值调用时,还是和自身会话的当前值一样. 原文地址:http://bbs.delit

oracle 序列重置

问题一:如何重置oracle序列 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 'alte

oracle序列在insert into 语句中的使用

很多人创建了序列,但是在插入语句中不知道怎么使用,在此做个简单介绍. oracle序列有两个参数:nextval和currval,使用的时候,需要输入sequence_name.nextval或sequence_name.currval 代码如下: insert into PTZHMM T values (ptzhmm_id_seq.nextval,'707宽带账号','FQB9707','12345678'); 上面PTZHMM是table_name,ptzhmm_id_seq是sequenc