start with 4001,是序列创建好之后,当前值是4001,那么当你插入值的时候,序号用的是下一个值,那么4001的下一个就是4002了,所以你的第一个就是4002了。
您应该试试从4000开始,第一个看看是不是4001
create sequence permissionseq start with 4001 INCREMENT BY 1 NOCYCLE NOCACHE
查询当前的值是多少。
select permissionseq .CURRVAL from dual;
通常是按你start with 开始的,你插入前查询下当前的值是不是start with的值。
呵呵,没道理啊,是不是创建sequence后执行过nextval了,把sequence删除后再试下呗
使用下面的语句查看下你当前的序列最小值是多少
SELECT *
FROM USER_SEQUENCES
WHERE SEQUENCE_NAME = '你的序列名(大小写注意)';
序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号
如果最小值是4001,而你的第一个生成的却是4002,(猜测)那么可能是你同学的oracle序列生成器在起初就开始自动加1了。
使用以下试试:
ALTER SEQUENCE 序列名 RESTART WITH 4001;
在不行,我看只能换oracle软件了。
我自己试了下,也没出现这种情况,对于你同学出现的这种情况我是有点郁闷,这是为什么呢?人品问题么?还是今天机子吃了豹子胆敢该oracle公司的生成器,呀的活的不耐烦了,当然不排除自己不小心改掉了。。。(以上纯属个人看法,希望不要对我发表攻击性语言)