日期:2014-05-18  浏览次数:20556 次

求解答这条题目,想了很久了,谢谢大伙
创建测试表test,表中有四个字段,sid(自动编号,标识种子为1,自增量为1,主键),sno(学号) char(8),姓名 char(8),入学年份 datetime;
建立一个触发器,实现当插入一条学生记录时,学号由以下规则生成:
1.假设sid<10,则学号=入学年份+‘000’+sid
2.假设sid<100,则学号=入学年份+‘00’+sid
以此类推,生成八位的学号。


主要是这个“学号=入学年份+‘000’+sid”,我不知道怎么写,谢谢了

------解决方案--------------------
探讨

引用:
引用:

麻烦弄个给我参考参考,谢谢,呵呵

1楼不行?

主要是我想用触发器实现

------解决方案--------------------
go
if OBJECT_ID('test') is not null
drop table test
go
create table test(
[sid] int identity(1,1) primary key,
sno char(8),
name char(8),
estime datetime
)
go
if OBJECT_ID('tri_insert') is not null
drop trigger tri_insert
go
create trigger tri_insert on test
for insert
as
declare @sno char(8)
begin
--这句实现党小于十时用三个零,大于时用两个
--when sid>10,例如00010,那么right(00010,4)=0010
select @sno=ltrim(year(estime))+right('000'+ltrim([sid]),4)
from inserted
update test set sno=@sno from inserted b where b.[sid]=test.[sid]
end

insert into test (name,estime)values('tt','2009-08-30')
select *from test

跟楼上差不多