mysql存入订单号不重复,SQL Server利用sql函数生成不重复的订单号的代码

这篇文章主要为大家详细介绍了SQL Server利用sql函数生成不重复的订单号的代码,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!

代码如下:

ALTER function [dbo].[GetOrderNum](

@ebaystockflag varchar(20)//规则字母

)

returns varchar(100)

AS

BEGIN

declare @dt CHAR(8)

declare @flag varchar(20)

set @flag='B'+@ebaystockflag

set @dt=CONVERT(CHAR(8),GETDATE(),112)

declare @max varchar(100)

SELECT @max=MAX(OrderNumber)

FROM tb_EbayOrder WITH(XLOCK,PAGLOCK)

WHERE OrderNumber like @flag+'%'

set @max=isnull(@max, @flag+@dt+'000')--查不到结果给个默认值

declare @a varchar(100)

declare @num varchar(10)

declare @ordernum varchar(20)

set @a=Convert(varchar,right(@max,len(@max)-10))--截取数字部分

if(LEFT(@a,1)=0)--以0开头

begin

if(SUBSTRING(@a,2,1)=0)--有两个0

begin

set @num=Convert(varchar,SUBSTRING(@a,3,LEN(@a-2))+1)

end

else if(SUBSTRING(@a,3,1)=0 and SUBSTRING(@a,2,1)=0)--有三个0

begin

set @num=1

end

else begin --只有一个0的情况

set @num=Convert(int,SUBSTRING(@a,2,LEN(@a))+1)

end

end

else begin --数字大于100的情况

set @num=Convert(varchar,@a+1)

end

if(LEN(@num)=1)--截取后不满三位的补0

begin set @num='00'+@num end

if(LEN(@num)=2)

begin set @num='0'+@num end

set @ordernum=@flag+@dt+@num

return @ordernum

END

调用:在事务中先锁定要操作的表

代码如下:

SELECT * FROM tb_EbayOrder WITH (TABLOCKX)

SELECT * FROM tb_EbayOrderList WITH (TABLOCKX)

SELECT * FROM tb_EbayOrderUserInfo WITH (TABLOCKX)

调用:select dbo.GetOrderNum(@ebaystockflag)

注:关于SQL Server利用sql函数生成不重复的订单号的代码的内容就先介绍到这里,更多相关文章的可以留意512笔记的其他信息。

关键词:SQL SERVER

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值