文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>通过SQL自动添加流水号

通过SQL自动添加流水号

时间:2011-04-19  来源:About-.NET

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

      流水号格式:

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

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

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

   一、数据库中添加一个表: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
--------------------------------------------------------------------------------------------

 

        

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载