oracle 中用nextval调用序列的问题

很奇怪不知道为什么每次插入的ID都是2而不是1.就是我之前是2插入之后就是4再插就是6.但是我的序列明明设置的就是增加1.然后我用currval就变成每次都增加1了.但是... 很奇怪不知道为什么每次插入的ID都是2而不是1.就是我之前是2插入之后就是4再插就是6.但是我的序列明明设置的就是增加1.然后我用currval就变成每次都增加1了.但是如果用currval第一次调用序列的时候还必须得先调用一次nextval.这令我很头疼.不知道怎么解决,因为我的sql是写在程序中的
我就是在plsql里写的inster into语句然后提交.我怀疑是不是我调用两次序列造成的结果.
展开
 我来答
hqbzl
2011-09-19 · 超过20用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:54.7万
展开全部
oracle的序列做主键有一个问题的,序列用过一次就+1,比如你的序列,当前是2,增量为1,如果在查询中有地方用到这个序列,每用到这个序列就会按增量变化,你注意看下你的程序里有没有查询用到这个序列,
另外,那个序列,初始必须,nextval一次,这个你用之前判断一次呗,看值是几,如果没有,就调一次nextval
如果可以,请贴出调用序列的那部分代码,以便查找问题,
追问
insert into sms_result (ID,productid,orderid,businessid,inserttime,money,isactive,userid)
values(sms_result_id.NEXTVAL,'59913','473','473',sysdate,0,'0','89993');
这就么一个简单的sql.在plsql执行的然后提交再查询的时候就是+2
agui_xiaowei
推荐于2018-03-23 · 超过33用户采纳过TA的回答
知道答主
回答量:125
采纳率:0%
帮助的人:72.9万
展开全部
肯定是其他的地方调用了序列,看看程序里面其他地方,在你insert操作前后有对序列相关的调用。直接执行sql语句序列加的应该是1,如果查询currentval加了2的话,看看在这张表上有没有相关insert的触发器,也调用了序列。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王海超521
2011-09-19 · TA获得超过852个赞
知道小有建树答主
回答量:406
采纳率:0%
帮助的人:376万
展开全部
程序里是不是有2个nextval?
追问
我就是在plsql中直接写的SQL语句.程序我都没运行就这样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式