mysql每次查询加流水号_通过SQL自动添加流水号

通过SQL自动添加流水号

项目中往往有一些单据流水号或者流程流水号是希望通过新增一条记录后自动产生一个编号的,比如新增一条流程就自动根据当前日期自动添加该流程的流程流水号,下面介绍两种不同类型流水号通过SQL自动产生的方法。

流水号格式: www.2cto.com

第一种(数值类型):日期+流水号,比如“201104190001”-->"201104190002";

第二种(文本类型):前缀+日期+流水号,比如“WT201104190001”-->"WT201104190002"。

不论哪种情况,流水号的生成原则都是一样的,流水号的产生都需要根据当前日期产生,新增的一条记录的流水号为当前日期下所有记录中流水号最大那条加1得来。

www.2cto.com

一、数据库中添加一个表:TestNo

列名 数据类型 说明

ID uniqueidentifier 主键

No bigint 流水号字段,不过是纯数字型的流水号,这个为本例子的第一种情况,流水号可以为纯数字

DT datetime 新增一条记录的当前时间,相信每新增一条记录都会记录这次操作的当前时间的。

CharNo varchar(50) 流水号字段,不过是可以有字符的流水号,这个为本例子的第二种情况。

二、SQL代码

------

--自动流水号为纯数字的情况,如 201104190005

------

declare

@x int,

@y char(8)

select @x= COUNT(no) from TestNo where CAST(DT as date)=CAST(GETDATE() as date)

if(@x=0)

begin

select @y=convert(char(8),getdate(),112)

insert TestNo(No,DT) values(

@y+'0001'

,GETDATE())

end

else

insert TestNo(No,DT) values(

(select MAX(No)+1 from TestNo where CAST(DT as date)=CAST(GETDATE() as date))

,GETDATE())

select * from TestNo

------

--自动流水号为字符的情况,如 WT201104190005

------

declare

@x1 int,

@y1 char(8)

select @x1= COUNT(CharNo) from TestNo where CAST(DT as date)=CAST(GETDATE() as date)

if(@x1=0)

begin

select @y1=convert(char(8),getdate(),112)

insert TestNo(CharNo,DT) values(

'WT'+@y1+'0001'

,GETDATE())

end

else

begin

insert TestNo(CharNo,DT) values(

'WT'+cast((select MAX(CAST( SUBSTRING(charno,3,12) as bigint))+1 from TestNo where CAST(DT as date)=CAST(GETDATE() as date))as varchar(50))

,GETDATE())

end

select * from TestNo

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值