求一个触发器的编写
成绩表:result_info
列:stu_id,course_no,result
老师要求在成绩表上编写一个触发器,
不能够修改低于60分的学生成绩,否则报错并取消操作
可是我编的触发器在进行批量修改时出错,只有当要修改的不及格成绩在最后一行才生效。比如:
stu_id course_no result
001 1 80
001 2 45
001 3 70
我使用:update result_info set result=90 where stu_id=001
这个语句时触发器就无效,请各位指教~~~
我写的触发器:
if exit(select name from sysobjects
where name= 'tr_result ' and type= 'tr ')
drop trigger tr_result
go
create trigger tr_result on result_info
for update,insert
as
declare @result float
select @result=result from deleted
if @result <60
begin
raiserror( '禁止修改不及格成绩! ',16,1)
rollback transaction
end
go
------解决方案--------------------create trigger tr_result on result_info
for update,insert
as
if exists(select 1 from deleted where result <60)
begin
raiserror( '禁止修改不及格成绩! ',16,1)
rollback transaction
end
go