ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » MS SQL Server » 自动编号触发器

标题: 自动编号触发器
离线 时代吉他
初级会员



精华贴数 0
个人空间 0
技术积分 34 (37740)
社区积分 0 (1012230)
注册日期 2006-6-30
论坛徽章:0
      
      

发表于 2008-9-11 10:38 
自动编号触发器

表结构
sid            id                                    title        projectid
1      CDTE-HBTL048-CZ01-08       采购合同    TL048
1      CDTE-HBTL048-CZ02-08       采购合同    TL048
1      CDTE-HBTL047-CZ01-08       采购合同    TL047
1      CDTE-HBTL048-CZ03-08       采购合同    TL048
1      CDTE-HBTL049-CZ01-08       采购合同    TL049

我的编码规则是:CDTE-HBTL048-CZ01-08
CDTE-HB是固定的
TL048是表里一个叫projectid,
-CZ是固定的
01是流水号,增长步长是1
-08取的是年份最后两位。

ID这个字段要自动标号,请教各位大虾如何写这触发器。


只看该作者    顶部
离线 沙漠孤鹰
初级会员


精华贴数 0
个人空间 0
技术积分 175 (10730)
社区积分 14 (9281)
注册日期 2006-4-18
论坛徽章:0
      
      

发表于 2008-9-11 13:56 
这个编号里面大部分都是固定的,要算的只有两个地方

declare @projectid varchar(10), @flowid int, @id varchar(100)

select @projectid=projectid from inserted

--看举的例子,流水号和projectid是有关系的
select @flowid=coun(*) from tablename where projectid=@projectid
--当然也可以通过截取id字段的内容来算流水号,稍微麻烦点

if @flowid<10
  set @id='CDTE-HB'+@projectid+'-CZ'+'0'+cast(@flowid as char(1))+convert(char(2),getdate(),12)
else
  set @id='CDTE-HB'+@projectid+'-CZ'+cast(@flowid as char(2))+convert(char(2),getdate(),12)

[ 本帖最后由 沙漠孤鹰 于 2008-9-11 13:57 编辑 ]


只看该作者    顶部
离线 时代吉他
初级会员



精华贴数 0
个人空间 0
技术积分 34 (37740)
社区积分 0 (1012230)
注册日期 2006-6-30
论坛徽章:0
      
      

发表于 2008-9-11 14:34 
太谢谢你了!我试一下。


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问