一种简单产生流水号的方法

最近做项目在做到工单处理的时候,工单的流水号需要自动产生,找了好多方法,都有点麻烦,并且并发性都难以控制,工单号的格式要求是:单的标识+年月日+当日流水号(如:No.20080808001,No.20080808002),前面的都好处理,关键就是处理当日流水号的问题,用户一点创建单马上就要出现单号,所以自己想了种比较简单的方法来实现每天流水号的产生,产生流水号的方法很简单,但是也没有很好的并发性处理,创建时使用的单号很可能已经别别人抢先使用了,所以我在保存单的时候再做一次检查,如果单号已经别使用那么就重新生成一个单号,保存完成后将这个单号返回给用户,这样就基本几解决了工单号的产生问题了

表格如下:

表名(Bill)

字段名称字段意义
Id标识
No流水号
Title工单标题
CreateTime建单时间

 

为了简单又能说明问题,就这么多字段,那么我要每次增加一张单的时候怎么让No按照当天的流水号自动加1呢?

可以在SQL里自定义一个函数,然后再插入数据的时候来调用这个函数就可以了

ExpandedBlockStart.gif/**//*
**************************************
功能:产生当天工单的流水号
参数:@pfx 前缀表示,如:A ,AA, BA
结果:返回如:A080721001,A080721002

  作者:Vaiyanzi  (Email:vaiyanzi@gmail.com)
**************************************
*/
CREATE FUNCTION  dbo.fun_getNo (@pfx nvarchar(10))  
RETURNS nvarchar(20)  AS  
BEGIN 
    
DECLARE @No nvarchar(20)
    
Set @No=@pfx --
    DECLARE @tNo int
    
SELECT @tNo = RIGHT(ISNULL(MAX(No),0), 3+ 1001 FROM Bill WHERE  (CONVERT(varchar(10), CreateTime, 120= CONVERT(varchar(10),GetDate(),120))
    
SET @No = @No + CONVERT(varchar(10), GetDate(),12+ RIGHT(@tNo3)
    
RETURN @No
END

 

 这样就可以在插入数据的时候调用这个函数来产生当日的工单流水号了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值