Oracle 数据库 sequence自动增长问题

2024-12-17 08:19:18
推荐回答(4个)
回答1:

start with 4001,是序列创建好之后,当前值是4001,那么当你插入值的时候,序号用的是下一个值,那么4001的下一个就是4002了,所以你的第一个就是4002了。
您应该试试从4000开始,第一个看看是不是4001

回答2:

create sequence permissionseq start with 4001 INCREMENT BY 1 NOCYCLE NOCACHE

查询当前的值是多少。
select permissionseq .CURRVAL from dual;

通常是按你start with 开始的,你插入前查询下当前的值是不是start with的值。

回答3:

呵呵,没道理啊,是不是创建sequence后执行过nextval了,把sequence删除后再试下呗

回答4:

使用下面的语句查看下你当前的序列最小值是多少
SELECT *
FROM USER_SEQUENCES
WHERE SEQUENCE_NAME = '你的序列名(大小写注意)';

序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号
如果最小值是4001,而你的第一个生成的却是4002,(猜测)那么可能是你同学的oracle序列生成器在起初就开始自动加1了。
使用以下试试:
ALTER SEQUENCE 序列名 RESTART WITH 4001;
在不行,我看只能换oracle软件了。
我自己试了下,也没出现这种情况,对于你同学出现的这种情况我是有点郁闷,这是为什么呢?人品问题么?还是今天机子吃了豹子胆敢该oracle公司的生成器,呀的活的不耐烦了,当然不排除自己不小心改掉了。。。(以上纯属个人看法,希望不要对我发表攻击性语言)