删除一条自动增长列记录,在下次插入数据时怎么让自动增长接着前面的序号?

YJL5555 2013-06-09 03:31:20
[B][size=7][size=6]删除一条自动增长列记录,在下次插入数据时怎么让自动增长接着前面的序号?[/size][/size][/B]
例如:有1 2 3 4 5 条记录,删除5后,下次插入时是5而不是6?
来源: http://www.cxy.me/bbs/announce.asp?boardid=26
...全文
1264 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
bw555 2015-02-10
  • 打赏
  • 举报
回复
需要自己实现锁机制吧,比较麻烦,建议调整业务逻辑 话说这帖子好老…………
苦瓜蛋糕 2015-02-10
  • 打赏
  • 举报
回复
序列的值对于机器来说5和6没任何区别,只要是唯一的,所以不可能的。 问题的原因在于你的系统将序列的值用到了业务逻辑上,这点是要不得的
zha_sir 2015-02-04
  • 打赏
  • 举报
回复
如果不重新新建序列或修改序列的话是办不到的
不写代码的钦 2015-01-31
  • 打赏
  • 举报
回复
不能自动补
绕天涯_2014 2015-01-30
  • 打赏
  • 举报
回复
Sequence没有prevalue一说,序列的值只能增加,不能减小,除非到达最大值且设置了cycle可以回收,序列会从最小值重新开始增加。要实现这个功能只能重新创建序列,或者用sql查出当前值,在插入数据时,加1后作为插入的值,插入数据库
yuyeyi 2014-05-09
  • 打赏
  • 举报
回复
引用 11 楼 DYFDWX 的回复:
序列本身是没有意义的,只是一个主键作用。 如果用select max(id) from table 则效率低,而且会有并发问题。
可以用java内的缓存,每次取出几十个或几百个, 如果用完了就再去取。 这样并发也没问题了。
DYFDWX 2014-04-29
  • 打赏
  • 举报
回复
序列本身是没有意义的,只是一个主键作用。 如果用select max(id) from table 则效率低,而且会有并发问题。
十年基民 2014-04-28
  • 打赏
  • 举报
回复
不要seq,每次自己查询当前最大值?
yuyeyi 2014-04-28
  • 打赏
  • 举报
回复
这个序列没办法,只能自己控制。
大脸猫o 2014-03-13
  • 打赏
  • 举报
回复
引用 楼主 YJL5555 的回复:
[B][size=7][size=6]删除一条自动增长列记录,在下次插入数据时怎么让自动增长接着前面的序号?[/size][/size][/B] 例如:有1 2 3 4 5 条记录,删除5后,下次插入时是5而不是6? 来源: http://www.cxy.me/bbs/announce.asp?boardid=26
这个序列只是一个主键作用,保证数据不重复,连续不连续意义不大吧。
gangma2 2014-03-12
  • 打赏
  • 举报
回复
如果说,你每次删除的都是最后一个值,这种情况可以实现,不过麻烦了点,也不是很实用,但能达到那种效果:
select seq_users.currval from dual;当前序列值:

修改序列步长为-1:
Alter Sequence seq_users Increment By -1;
select seq_users.nextvalfrom dual;
select seq_users.currval from dual;
当前的序列值:
在将序列的增长步长修改会来:
Alter Sequence seq_users Increment By 1;
forgetsam 2013-06-11
  • 打赏
  • 举报
回复
没有并发自己写触发器,有并发别想什么连号。
sych888 2013-06-09
  • 打赏
  • 举报
回复
序列生成后是不可逆转的
Wentasy 2013-06-09
  • 打赏
  • 举报
回复
这个是没办法的,下次取Sequence的值肯定是下一个了。
  • 打赏
  • 举报
回复
不可能删掉前面的了 后面的每个序列值都要更改 把前面补上? 然后删除序列 重新建一个seq 起始值为最大值+1?
luoyoumou 2013-06-09
  • 打赏
  • 举报
回复
如果删除是4呢?(不是当前最大的行号呢?)是不是4也得补上?
搞怪的索引 2013-06-09
  • 打赏
  • 举报
回复
当前序列肯定是生成不了 5 了,除非重新创建序列,然后手工产生到4,然后再去用,其实序列主要用作唯一键,你这样用就失去了序列的意义,而只是每次产生一个连续值而已;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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