12
返回列表 发新帖
楼主: y200767

求助:如何实现流水号每月从1重新开始编号?

[复制链接]
论坛徽章:
29
秀才
日期:2015-10-26 09:55:082016猴年福章
日期:2016-02-23 09:58:342013年新春福章
日期:2013-02-25 14:51:242016猴年福章
日期:2016-02-18 09:31:30秀才
日期:2015-12-21 09:53:46猴赛雷
日期:2016-02-18 09:33:422015年新春福章
日期:2015-03-06 11:59:47猴赛雷
日期:2016-02-23 10:04:24秀才
日期:2018-06-21 10:08:00秀才
日期:2018-07-23 13:38:29
11#
发表于 2016-1-12 08:38 | 只看该作者
CDaniel 发表于 2016-1-11 12:16
具体可以分享下嘛

這方法應該是在Table Trigger上加上After Insert抓取自身編號欄號給號並設定該欄位為Unique index。
以此例來說就是~~
SELECT NVL(MAX(SUBSTR(ACK_ID,1,10)),TO_CHAR(SYSDATE,'YYYYMM')||'0000')+1 FROM DATA_TABLE WHERE SUBSTR(HEADER_NO,1,6)=TO_CHAR(SYSDATE,'YYYYMM')
在Trigger中加上上述SQL來自動給號,因此可不必設定Sequence或Schedule即可達到每月自動重新
給號!!!
若想做到事前給號的話...也只要切個Table去保存目前最大號。在利用Function去取號並更新最大號,即
可達到事前取號!!我們目前也是最常使用此方法來自動給號。此方法可擺脫Oracle固定流水號的編碼模式
且編碼彈性(YYYYMM、YYMMDD、YYYYWW...etc,也可以有單別)重點是不需要特地定期去更新編碼。

使用道具 举报

回复

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

本版积分规则 发表回复

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