存储过程、触发器和用户自定义函数实验2、触发器

本文介绍了三个SQL触发器的实例:1)创建一个UPDATE触发器,确保study表中成绩更新后不能降低;2)创建一个DELETE触发器,限制一次只能删除study表的一条记录;3)建立一个INSERT触发器,规定向course表插入记录时,任课教师字段不能为空。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)为study表创建一个UPDATE触发器,当更新成绩时,要求更新后的成绩不能低于原来的成绩。


CREATE TRIGGER UPDATE_SCORE ON study
instead of update
as
declare @sno2 char(5),@cno2 char(4),@score1 smallint,@score2 smallint
select @sno2=sno,@cno2=cno,@score2=score
from inserted
select @score1=score
from deleted
if(@score2>=@score1)
update study set score=@score2
where study.cno=@cno2 and study.sno=@sno2
go



(2)为study表创建一个DELETE触发器,要求一次只能从study表中删除一条记录。


CREATE TRIGGER DEL_STUDY ON study
instead of DELETE
AS
begin
declare @num int,@sno char(5),@cno char(4)
select @num=COUNT(*)from deleted
if @num=1
begin
select @sno=sno,@cno=cno from deleted
delete from study where @sno=study.sno and @cno=study.cno
end
else print '一次不能删除多条记录'
end




(3)为course表创建一个INSERT触发器,要求插入的课程记录中任课教师不能为空。

 CREATE TRIGGER INSERT_COR ON course
instead of insert
AS
declare @cno char(4),@cname char(20),@teacher char(8)
select @cno=cno,@cname=cname,@teacher=teacher from inserted if(@teacher is null)
print '注意:任课教师不能为空!'
else
insert course values(@cno,@cname,@teacher)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liu_shb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值