oracle序列用nextval取值的问题

oracle中序列用nextval取值事为什么在程序中取出来值的与我直接在plsql中用nextval取出来的值不一样? 而且我在plsql中取出来的值比表中已有的值小很多,表中的值一直是程序中用nextval取出来的,而且远远没有达到序列最大值。 有什么情况会导致sequence.nextval取值不同步?? 灰常感谢!!!

不知你注意了没有,每一个sequence.nextval的值是不一样的,而且同一sequence每次取值是不一样的。
当sequence的cache为0时,每次sequence.nextval得到的值是当前sequence的值加1。
但cache不为0时,比如为20,他就意味着每次在缓存中去20次再写入数据库去,这样的的用sequence.nextval得到的值就比较难确定,但能保证每次去的值不一样,是递增的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-06-05
很简单,每次select seq.nextval 值都会增加1。所以你在plsql中使用 nextval 查询值的时候,它就返回的是加1后的值了。不信可以在 plsql中多用nextval取值,每一次都不一样,都是递增1。如果获取当前值是 currval。nextval每次查询都会增1。这是oralce的特点。
第2个回答  2011-11-22
程序里有循环去值得情况吗? 把代码贴一下吧!~ 这样很难看出问题来!~
一般都是没有你说的这个问题的!~
相似回答