在项目中遇到一个问题!不想用标识的id;想自定义id;如:P2009081000001;像这样子的,这是第一个,然后添加的时候自动是:P2009081000002...以此类推!这样的id怎么生成,是在程序中生成还是在数据库中生成!
我的项目是asp.net2.0+mssqlser2005谢谢!

解决方案 »

  1.   

    给你个例子 稍微该一下就可以了 用的是函数
    ALTER function [dbo].[createLogNo]()
    returns nvarchar(16)
    as
    begin
      declare @logno nvarchar(16) --日志号
      declare @day nvarchar(2)
      declare @month nvarchar(2)
      declare @year nvarchar(4)
      declare @no int  --当天第几个日志号
      declare @fno nvarchar(10)  --日志号最后5位
      set @day=right('0'+convert(nvarchar,day(getdate())),2)
      set @month=right('0'+convert(nvarchar,month(getdate())),2)
      set @year=year(getdate())
      set @logno='Log'+@year+@month+@day
      --从数据库中取出当天的日志尾号是多少
      select @no=count(substring(Log_id,1,11)) from LogInfo where @logno = substring(Log_id,1,11)
      if(@no=0)
        begin
          set @logno='Log'+@year+@month+@day+'00001'
        end
      else
        begin
          select @no=convert(nvarchar,convert(int,substring(Log_id,12,16))) from LogInfo where @logno = substring(Log_id,1,11)
          set @fno='0000'+convert(nvarchar,convert(nvarchar,(convert(int,@no)+1)))
          set @fno=right(@fno,5)
          set @logno=@logno+@fno
        end
      return @logno
    end
      

  2.   

    程序,或者sql都是可以的,获取最大的编号进行处理就行了