• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SQL Server 开发之 使用触发器自动编号_sqlserver

sqlserver 搞代码 3年前 (2018-06-16) 74次浏览 已收录 0个评论
使用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    

http://www.gaodaima.com/36099.htmlSQL Server 开发之 使用触发器自动编号_sqlserver

  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

欢迎大家阅读《SQL Server 开发之 使用触发器自动编号_sqlserver,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址