十分感谢,自动生成流水账号
我的一个表中有字段:
id【int 自动增加】
file_id【。。。】
希望file_id能够自动生成 流水号,例如 Tyyyymmdd×××
T:固定字段 表示文本文件
A:固定字段 表示音频文件
V:固定字段 表示视频文件
yyyy表示年 mm表示月 dd表示日
×××:表示编号每天都从001 开始递增,这个递增和TAV没有关系,
比如今天第一个文件是文本文件,则标号是 T20120619001
今天第二个文件是音频文件,则标号是 A20120619002
今天第三个文件是视频文件,则标号是 V20120619003
希望大家给我详细的程序【最好有详细的注释】,本人菜鸟,不想使用存储过程完成这项工作,十分感谢
[解决办法]
首先固定字段你自己可以上传时判断获取,yyyymmdd直接通过DateTime.Now.ToString("yyyyMMdd")获取,最后3位序列号了。这个序列号必须在数据库中有一个表TB(Code,Value,UpdateTime),Code值用于区分是T,A,还是V,Value用于存序列号,UpdateTime存时间。生成流水号序列号时,判断TB中对应Code值是否存在当天的数据,如果不存在,把Value更新成001,UpdateTime更新成当天,然后获取该Value拼接之前的字符合成;如果存在,则把Value更新成Value+1,然后获取该Value拼接之前的字符合成。
[解决办法]
不用存储过程就用函数去完成
- SQL code
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')BEGIN DROP TABLE tbaENDGOCREATE TABLE tba( ID INT IDENTITY(1,1), Fileid VARCHAR(100))GOIF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'createid')BEGIN DROP FUNCTION CreateIDENDGOCREATE FUNCTION CREATEID(@Type VARCHAR(10))RETURNS VARCHAR(100)ASBEGINDECLARE @FileID VARCHAR(100)DECLARE @Num INTSELECT @Num = ISNULL(COUNT(1),0) FROM tba WHERE CHARINDEX(@Type,FileID) > 0 AND CHARINDEX(CONVERT(VARCHAR(8),GETDATE(),112),Fileid) > 0SET @Num = @Num + 1SET @FileID = @Type + CONVERT(VARCHAR(8),GETDATE(),112) + REPLICATE('0',3 - LEN(RTRIM(@Num))) + RTRIM(@Num)RETURN @FileIDENDGOINSERT INTO tbaSELECT dbo.CREATEID('T') UNION ALLSELECT dbo.CREATEID('A') UNION ALLSELECT dbo.CREATEID('V') UNION ALLSELECT dbo.CREATEID('T') UNION ALLSELECT dbo.CREATEID('T') SELECT * FROM tbaID Fileid1 T201206190012 A201206190013 V201206190014 T201206190025 T20120619003
[解决办法]