網站運營seo文章大全提供全面的站長運營經驗及seo技術!使用sql server創建數字類型的字段,可以設置為自動編號。但很多時候并不能滿足我們的需求,例如為學生編號時,可能要用到年級、系別等再加上流水號進行編號。下面給一個簡單的例子,使用觸發器來進行自動編號。
--創建測試表   
  if exists (select * from dbo.sysobjects where id = object_id(n'[dbo].[usertable]') and objectproperty(id, n'isusertable') = 1)
  drop table [dbo].[usertable]
go
  create   table  usertable(userid   varchar(20),username   nvarchar(20))   
   go   
  --創建觸發器   
  create   trigger  tg_insert  on   usertable   
    for   insert    
  as    
    declare   @username nvarchar(20)   
    declare   @userid   varchar(20)   
    declare   @num      int   
    declare   @strnum   varchar(20)
    declare   @prefix   varchar(10)
    declare   @numlen   int
    declare   @strdate  varchar(20)
    --獲取當前日期
    set @strdate=substring(convert(varchar(10),getdate(),112),1,8) 
    --設置流水號的長度
    set @numlen = 4
    --設置前綴
    set @prefix = 's'
    select   @userid=max(userid)  from  usertable   
      where   userid   like   @prefix   +  @strdate   +   '%'   
    if @userid is null    
        set @num=0  
    else
        set @num=cast(replace(@userid,@prefix + @strdate ,'') as int)   
    set  @num = @num + 1 
    set  @strnum = cast(@num as varchar(10))
    while(len(@strnum)<@numlen)
         set @strnum = '0' + @strnum
    set   @[email protected] +  @strdate + @strnum
    select   @username=username   from   inserted   
    rollback    
    insert   into   usertable   values(@userid,@username)       
  go        
  --測試   
  insert   into   usertable(username)   values('aa')   
  go   
  insert   into   usertable(username)   values('bb')   
  go   
  insert   into   usertable(username)   values('cc')   
  go   
  --顯示數據   
  select   *   from   usertable   
  go