SQL 触发器 关于学生选课

创建一个触发器,当学生进行选课表“stucou”操作(选课,取消选课,改选课)时,能够自动改变相应课程的选课人数(course表下的chonum)
STUCOU表中有 学号STUNO,课程号COUNO
COURSE表中有 课名COUNAME,COUNO,选课人数CHONUM 谢谢了~初学者~

第1个回答  2013-12-10
我也很久没写过触发器了,不知道能不能帮你,楼主看看吧!Create trigger tr_stucou --创建触发器on stucou for update,insert,delete ---修改表stucou时触发,on是指定表进行操作,for 具体进行哪种操作as --事件触发后的操作declare @stuID_1 int
declare @stuID_2 int
begin
set @stuID_1=(select top 1 stuno from deleted) --在deleted临时表中取一条数据
set @stuID_2=(select top 1 stuno from inserted)--在inserted临时表中取一条数据
--该选课时触发 if(@stuID_1<>0 and @stuID_2<>0)
begin
update course set CHONUM=CHONUM-1 where couno in(select couno from deleted)
update course set CHONUM=CHONUM+1 where couno in(select couno from inserted)
return
end--取消选课时 if(@stuID_1<>0)
begin
update course set CHONUM=CHONUM-1 where couno in(select couno from deleted)
end
--选课时
if(@stuID_2<>0)
begin
update course set CHONUM=CHONUM+1 where couno in(select couno from inserted)
end
end 由于时间关系 注意下 删除,修改时只能 一条数据一条数据操作!如果你想要更加完善,最好一个操作创建一个触发器
第2个回答  2013-12-10
create trigger <triggername>on stucou
for insertasbegin declare @n int select @n = couno from inserted update course set chonum = chonum + 1 where couno = @nend create trigger <triggername>on stucou
for deleteasbegin declare @n int select @n = couno from deleted update course set chonum = chonum - 1 where couno = @nend create trigger <triggername>on stucou
for updateasbegin declare @n int declare @m int if update(couno) begin select @n = couno from inserted select @m = couno from deleted update course set chonum = chonum + 1 where couno = @n update course set chonum = chonum - 1 where couno = @m
endend本回答被网友采纳
相似回答