楼主: neozhu

[PL/SQL] 自定义自增序列的并发问题怎么解决

[复制链接]
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
31#
发表于 2017-2-28 23:08 | 只看该作者
阿吉2009 发表于 2017-2-28 09:12
象这种带有未知前缀的需求,能否通过用序列等方法解决性能吗?

序列是用来保证唯一性的。不能给它加上任何其它意义,比如视图通过序列号来判断有多少个(类似COUNT),比如通过大小判断其生成顺序(在带缓存RAC环境不成立), 这些都是不良设计。
如果有前缀就加上前缀,但是后面就是一串无意义数字,如果试图让它每次从1开始连续计数,那是徒劳。
你的代码里面有COMMIT,这已经破坏了事务完整性,最多起到SEQUENCE的效果,还不如用SEQUENCE。

使用道具 举报

回复
论坛徽章:
30
生肖徽章:猴
日期:2015-03-20 10:13:49ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:31优秀写手
日期:2015-03-07 06:00:14沸羊羊
日期:2015-03-13 13:26:07美羊羊
日期:2015-04-06 20:32:13天蝎座
日期:2015-07-20 12:34:47射手座
日期:2015-09-18 12:38:55乌索普
日期:2016-08-03 07:04:28奥运会纪念徽章:手球
日期:2016-09-26 07:19:26山治
日期:2016-10-19 05:48:10
32#
发表于 2017-3-1 09:21 | 只看该作者
newkid 发表于 2017-2-28 23:08
序列是用来保证唯一性的。不能给它加上任何其它意义,比如视图通过序列号来判断有多少个(类似COUNT),比 ...

多谢指点。
我是为了显示方便才在过程加COMMIT的。

使用道具 举报

回复
论坛徽章:
1
会员2006贡献徽章
日期:2006-04-17 13:46:34
33#
 楼主| 发表于 2017-3-2 15:08 | 只看该作者
newkid 发表于 2017-2-28 23:08
序列是用来保证唯一性的。不能给它加上任何其它意义,比如视图通过序列号来判断有多少个(类似COUNT),比 ...

虽然也知道没有实际的意义,但是很多业务场景都需要这样加特殊的前缀和流水码

使用道具 举报

回复
论坛徽章:
1
会员2006贡献徽章
日期:2006-04-17 13:46:34
34#
 楼主| 发表于 2017-3-2 15:09 | 只看该作者
阿吉2009 发表于 2017-2-28 09:00
CREATE OR REPLACE PROCEDURE NEXTSEQNO
(
  P_PREFIX  IN VARCHAR2,

写的很好,就是通过捕获异常来做update有点不好

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表