生成流水号方法

思路:将表某一字段的默认值设置成自定义函数,该自定义函数完成流水号的创建。
例子:流水号字段要求:1.yymmdd+6位流水号(如20071113000001)2.当天流水号递增,第二天流水号重新从000001开始。
    代码:
 --函数
create  function   [dbo].[f_getid]()   
 returns   varchar(14)   
  as  
  begin  
  declare   @id   varchar(14),
            @dt   varchar(8),
            @maxdt varchar(8)
  select   @dt=convert(varchar(8), getdate(),112)
  select   @maxdt=left(isnull(max(id),convert(varchar(8), getdate(),112)),8)  from bookid
  if @maxdt=@dt
  begin
  select   @id=@dt+right(1000001+isnull(right(max(id),6),0),6)
  from   bookid   where   id   like   @dt+'%'
  end 
  if @maxdt<>@dt
  begin
  select @id=@dt+'000001'
  end
  return(@id)  
  end 
--建表
CREATE TABLE [dbo].[bookid](
 [id] [varchar](14) COLLATE Chinese_PRC_BIN NOT NULL CONSTRAINT [DF_bookid_id]  DEFAULT ([dbo].[f_getid]()),
 [ISBN] [nchar](30) COLLATE Chinese_PRC_BIN NOT NULL,
 [inlibrary] [bit] NOT NULL CONSTRAINT [DF_bookid_inlibrary]  DEFAULT ((1)),
 CONSTRAINT [PK_bookid] PRIMARY KEY CLUSTERED
(
 [id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

posted @ 2007-11-13 19:49  guoan  阅读(938)  评论(0)    收藏  举报