sqlserver2000字段自动生成流水号

编号规则为:RE+年份+4位流水号。

开始我本来也是说用触发器或者是存储过程实现的,但发现存储过程不是很清楚,于是我就用触发器。
但写了会,发现还是有些基本的问题。

于是我就在网上找到了一个很好的实例。受这个的启发,我试验了很多次,并终于实现了,心里很开心的。

首先:创建视图来获得年份,因为接下来要创建一个函数,在函数里面不能使用getdate()函数的。

create   view v_getdate
as
select dt=year(getdate())

 

然后:创建一个函数来获得当前的最大编号,其实也就是进行了自动编号的过程。
ps:我要进行自动编号的字段是:cha_register表中的jgID。

create     function f_nextID()
returns char(10)
as
begin
declare @dt char(6)
select @dt=dt from v_getdate
select @dt='RE'+@dt
return(
select @dt+right(10001+isnull(right(max(jgID),4),0),4)
from cha_register with(XLOCK,PAGLOCK)                               

where jgID like @dt+'%'
)
end

 

 
最后:分为两种情况
1.还没有创建table:
因为我的cha_register表的字段很多,所以就选用users表中的id字段作为要自动编号的字段,方便举例。
create table users(
id char(10) primary key default dbo.f_nextID(),
name varchar(20)
)

2.已经创建了表(我就是这个情况)
 这个时候就需要alter table了,其实就是对jgID字段设置默认值。
alter table cha_register
add constraint df_a default dbo.f_nextID() for jgID

ps:如果想删掉这个默认值的话:
alter table cha_register drop constraint df_a
通过这个删除默认值的语句来看,在上面为字段设置默认值的时候,给默认值添加一个默认值名字df_a是会方便很多的。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值