oracle,一个insert语句中调用序列的2次nextval,序列增长的问题。

insertintotablevalues(art_id.nextval,art_id.nextval);执行后插入的两个值是一样的,比如3,3;4,4;5,5……如果是... insert into table values (art_id.nextval,art_id.nextval);
执行后插入的两个值是一样的,比如3,3;4,4;5,5……
如果是update语句也是这样的结果吗?
还有什么情况下调用nextval多次,而不会增长?
nextval在什么情况下增长?
展开
 我来答
百度网友bae7667
2012-05-28 · TA获得超过936个赞
知道小有建树答主
回答量:404
采纳率:100%
帮助的人:143万
展开全部
insert是插入一条记录,从无到有
update 是更新已经有的记录
如果你数据库有记录 1,2,3
前提主键没有唯一约束,如果你更新where 主键=3的,则不会出现第2条,如果你insert 3,那么自然会重复。
nextval是oracle自带的序列,这个和你什么时候插入记录毫无关系,只要调用了一次nextval,则oracle内部就会把对应这个名字的序列自增1,不管你有没有插入记录到表里,比如nextval是3,这时候没插入表,又取了一次,那么下次就是4了。nextval会直接返回一个自增的不重复的编号
你说的重复,要么是表里已经有了2,3,4记录,但序列从1开始,那么自然也会1,2,3,4这样取,因为序列和你的业务表毫无关系;要么是你代码有问题,比如你insert into table values (art_id.nextval,art_id.nextval);丢到了循环里,执行了N次,如果表没主键约束,自然就重复记录了。你可以排查下主键相同的2个记录,其他字段是否也相同,建议把代码里所有的insert语句都打印出来,这样在控制台里一目了然,哪些是该执行的,哪些是多余的,好定位问题。
追问
好长的回答,看得我好乱,不怎么理解……
云湖醉客
2012-05-28 · TA获得超过1983个赞
知道小有建树答主
回答量:820
采纳率:0%
帮助的人:304万
展开全部
nextval 用到就增加的,不会像你说的不增加,我没有遇到过
追问
事实就是
insert into "AA" values (BBS."S1".nextval,BBS."S1".nextval);
得到的结果是两个一样的数,比如1,1;2,2;3,3……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友876eb9c
推荐于2017-11-25 · TA获得超过1513个赞
知道小有建树答主
回答量:1200
采纳率:0%
帮助的人:276万
展开全部
按我的理解。应该是你放在一条sql语句当中时候。只增长1次。
比如你写2个insert语句。结果应该不同。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式