您当前的位置: 首页 >  sql

[MSSQL]开发之 使用触发器自动编号

发布时间:2010-09-19 21:56:00 ,浏览量:0

 SQL Server 开发之 使用触发器自动编号 收藏 使用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   @userid=@prefix +  @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

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fengfangfang/archive/2006/06/29/850431.aspx

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    106353博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

1.0015s