获取数据库中的一个值并给它加1,使这个字段值连续且不重复,如何防并发?

zzyhost 2019-07-23 09:24:09
数据库Oracle,普通办法是先获取字段最大值再+1,这样肯定会有并发的问题,如何达到连续且不重复呢?
...全文
272 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
faith.huan 2019-08-01
  • 打赏
  • 举报
回复
建个表来存你的最大数,比如表名叫t,字段叫f int i=0; int max=0; while(i==0){ max=获取t表f字段的值 i=update t set f=max+1 where f=max 执行的更m新条数max++ }
卖水果的net 2019-07-23
  • 打赏
  • 举报
回复
楼主这个问题,用序列是在数据库层面,最佳的解决方案。
zzyhost 2019-07-23
  • 打赏
  • 举报
回复
引用 1 楼 Mricoo_周 的回复:
用序列,获取最大值再+1是很笨的方法,自己测试用用就够了


发货单号,客户单位+序号的形式,用序列?我的问题主要是针对+1的情况下如何防并发,+1只不过是举个例子
Mricoo_周 2019-07-23
  • 打赏
  • 举报
回复
用序列,获取最大值再+1是很笨的方法,自己测试用用就够了
Mricoo_周 2019-07-23
  • 打赏
  • 举报
回复
引用 3 楼 卖水果的net 的回复:
楼主这个问题,用序列是在数据库层面,最佳的解决方案。
有个问题请教下版主大佬,写入表用序列的话 最大能支持多大的并发量
yaiger 2019-07-23
  • 打赏
  • 举报
回复
毫无疑问是序列号,sequence

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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