首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

非常感谢,自动生成流水账号

2012-06-21 
十分感谢,自动生成流水账号我的一个表中有字段:id【int 自动增加】file_id【。。。】希望file_id能够自动生成 流

十分感谢,自动生成流水账号
我的一个表中有字段:

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
[解决办法]
探讨
那我插入一条记录的时候怎么让他自动生成流水编号呢?

热点排行