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语句然后提交.我怀疑是不是我调用两次序列造成的结果. 展开
我就是在plsql里写的inster into语句然后提交.我怀疑是不是我调用两次序列造成的结果. 展开
3个回答
展开全部
oracle的序列做主键有一个问题的,序列用过一次就+1,比如你的序列,当前是2,增量为1,如果在查询中有地方用到这个序列,每用到这个序列就会按增量变化,你注意看下你的程序里有没有查询用到这个序列,
另外,那个序列,初始必须,nextval一次,这个你用之前判断一次呗,看值是几,如果没有,就调一次nextval
如果可以,请贴出调用序列的那部分代码,以便查找问题,
另外,那个序列,初始必须,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
展开全部
肯定是其他的地方调用了序列,看看程序里面其他地方,在你insert操作前后有对序列相关的调用。直接执行sql语句序列加的应该是1,如果查询currentval加了2的话,看看在这张表上有没有相关insert的触发器,也调用了序列。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序里是不是有2个nextval?
追问
我就是在plsql中直接写的SQL语句.程序我都没运行就这样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |