注册 登录
编程论坛 SQL Server论坛

[求助]我需要主键不需要自己插入信息,但是以这种格式20070917-001然后每加一条信息

paohui01 发布于 2007-09-17 15:46, 742 次点击
我需要主键不需要自己插入信息,但是以这种格式20070917-001然后每加一条信息 最后面的数字递增
请问这个怎么实现 谢谢

[此贴子已经被作者于2007-9-17 15:46:49编辑过]

4 回复
#2
西风独自凉2007-09-18 14:39

在前台做一個流水號就可以了。。。。

#3
purana2007-09-18 15:38
写了一个流水号的触发器.

create table test(
[id] char(13),
[data] varchar(200)
)
go
if exists(select name from sysobjects
where name='auto_id' and type='tr')
drop trigger auto_id
go
create trigger auto_id on test
instead of insert
as
declare @year varchar(4)
declare @month varchar(2)
declare @day varchar(2)
declare @new_id char(13)
declare @new_no char(4)
declare @data varchar(200)

select @year=convert(varchar(4),datepart(year,getdate()))
select @month=convert(varchar(2),datepart(month,getdate()))
if len(@month)=1
select @month='0'+@month

select @day=convert(varchar(2),datepart(day,getdate()))
if len(@day)=1
select @day='0'+@day

select @data=data from inserted

select @new_no=right('0000'+convert(varchar(4),max(convert(int,right(id,4)))+1),4) from test

if @new_no='' or @new_no is null
select @new_no='0001'
select @new_id=@year+@month+@day+'-'+@new_no
begin
insert into test([id],[data]) values(@new_id,@data)
if @@rowcount=0
begin
raiserror('error',16,1)
rollback tran
end
end
go

insert into test(data) values('purana')
select * from test
#4
topcool2007-09-21 17:44
流水号的触发器,厉害!!!
#5
topcool2007-09-21 17:44
我受益非浅~~~~
1