我发现oracle的一个问题, 关于序列的,求解决

alleni123 2012-11-21 10:14:36
就是我建立了一个序列,
然后insert的时候使用这个序列,

可是insert失败的时候, 这个序列还是会自己增加。

比如我让序列从1开始, 然后我insert失败了3次,

第四次成功的时候, 序列号直接就是4了。
123被跳过去了。

这个问题怎么解决??
...全文
377 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
潇洒王子 2012-12-11
  • 打赏
  • 举报
回复
灵活处理,活学活用。
sky_08_06_02 2012-12-06
  • 打赏
  • 举报
回复
我觉得序列的这个特性非常合理,如果你insert语句失败的次数少,跳过几个就不是问题,如果insert语句失败的次数量大,那么你的程序或者就应该考虑修改了
善若止水 2012-12-05
  • 打赏
  • 举报
回复
其实序列就是这个特性,不管成不成功,都会自动的加一。你可以再插入前定义个变量,用于保存最大值,插入时取最大值加1就行了。希望对你有所帮助
linwaterbin 2012-12-04
  • 打赏
  • 举报
回复
这个问题我的处理方法是用rownum+1来代替sequence
luoyoumou 2012-11-23
  • 打赏
  • 举报
回复
这个问题,不是问题,不等你,人家早就发现了!
UPC子夜 2012-11-23
  • 打赏
  • 举报
回复
引用 9 楼 alleni123 的回复:
引用 5 楼 UPC05070000 的回复:序列的特点就是自增 虽然你的insert失败了 但是取序列的操作成功了啊 取序列的nextval不和你的sql是同一个事务 没办法控制 如果你想让某个字段不间断的递增 可以用max(本字段)+1来进行插入啊 不太明白啊, 能不能给我写个简单的代码例子让我看看??
假设有表A 其中有三个列 id name value id希望是自增的,从一开始 你原来写的insert语句是 insert into a (id,name,value)select 序列.nextval,'name','value' from dual 现在可以改成 insert into a (id,name,value)select max(id),'name','value' from dual 不过需要注意的是 这样的话 一次只能插入一条记录 否则 就会导致id重复 也就是8楼所说的问题
UPC子夜 2012-11-22
  • 打赏
  • 举报
回复
序列的特点就是自增 虽然你的insert失败了 但是取序列的操作成功了啊 取序列的nextval不和你的sql是同一个事务 没办法控制 如果你想让某个字段不间断的递增 可以用max(本字段)+1来进行插入啊
woof_1128 2012-11-22
  • 打赏
  • 举报
回复
没帮法!
wanglipo 2012-11-22
  • 打赏
  • 举报
回复
呵呵,怎么说呢, 插入的时候虽然没插入成功,但是已经使用了当前的序列值啊,所以必然会变化,不然那才是有问题的
ora-0600 2012-11-22
  • 打赏
  • 举报
回复
这就是oracle db sequence的缺点 如果你设置了sequence的cache的,那可能中断的数据还要多
qinglang1987 2012-11-22
  • 打赏
  • 举报
回复
sequece 执行一次其值加1 ,虽然sql insert 异常但是sequece 执行啦
alleni123 2012-11-22
  • 打赏
  • 举报
回复
引用 5 楼 UPC05070000 的回复:
序列的特点就是自增 虽然你的insert失败了 但是取序列的操作成功了啊 取序列的nextval不和你的sql是同一个事务 没办法控制 如果你想让某个字段不间断的递增 可以用max(本字段)+1来进行插入啊
不太明白啊, 能不能给我写个简单的代码例子让我看看??
forgetsam 2012-11-22
  • 打赏
  • 举报
回复
有什么可解决的,谁规定表中的数据必须从1开始。 主键就是一个唯一检索标识,它只要唯一就可以了,如果你需要主键表达业务含义,自己写算法去算。
sanshengshihl 2012-11-22
  • 打赏
  • 举报
回复
采用字段最大值+1可能会存在并发,取值重复的问题
zhouzhexialei 2012-11-22
  • 打赏
  • 举报
回复
我理解的序列一般不太会表达业务含义吧,可能是主键的一部分,或者是其他的什么。
Galen_Gao 2012-11-22
  • 打赏
  • 举报
回复

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧