--在xs表插入平均成绩一列,使用触发器实现如果一个学生一门课登记成绩了,自动计算平均成绩并保存到xs表的对应平均成绩列中。
alter table xs
add 平均成绩 float
create trigger tg
on cj
for insert
as
update xs
set xs.平均成绩=(
select avg(cj.成绩)
from cj,inserted
where cj.学号=inserted.学号
group by cj.学号
)
where xs.学号=(select inserted.学号
from inserted
)
insert into cj
values('2006030101','J005','90')
--创建基本表changesd(学号,姓名,原专业,新专业,转入日期(设置默认值为当前日期)),使用触发器实现如果一个学生转专业了,
--则向changesd表里插入一条信息。
create table changesd(
学号 char(10),
姓名 nchar(10),
原专业 char(16),
新专业 char(16),
转入日期 smalldatetime default getdate()
)
create trigger trg
on xs
for update
as
if update(专业)
begin
declare @sno char(10),@sname nchar(10),@predept char(16),@aftdept char(16)
select @sno=xs.学号,@sname=xs.姓名,@predept=xs.专业,@aftdept=inserted.专业
from xs,inserted
where xs.学号=inserted.学号
insert into changesd
values(@sno,@sname,@predept,@aftdept,GETDATE())
end
update xs
set xs.专业='信息管理'
where xs.学号='2006030102'