MySQL触发器的创建和使用

本文介绍了如何在MySQL中创建和使用触发器,包括限制学生年龄在16~25岁之间、确保成绩在0~100分之间以及在删除学生时同步删除其在成绩表中的记录。通过示例代码展示了触发器的创建、调用及查看过程,强调了数据库完整性约束的重要性。
摘要由CSDN通过智能技术生成

① 在学生表Student中定义一个触发器 tri1,保证新添加的学生的年龄(Sage)在16~25岁之间。

DROP TRIGGER if EXISTS tri1;  #避免重复出现tri1
delimiter ;;	#开始
CREATE TRIGGER tri1 BEFORE INSERT ON student FOR EACH ROW
BEGIN
	IF(new.Sage > 25) OR (new.Sage > 16)
THEN
	SIGNAL SQLSTATE 'HYOOO' SET message_text = '输入的年龄要在16~25之间';
	END IF;
END;;
delimiter;	#结束

#调用触发器
insert into Student values('200231001', '王涛', '男', 30, 'IS')

 
查看触发器:
呓语程序缘

调用结果:
呓语程序缘

 
② 在成绩表SC中定义一个触发器tri2,当修改一个记录时,确保此记录的成绩(Grade)在0~100分之间。

DROP TRIGGER if EXISTS tri2;  #避免重复出现tri2
delimiter ;;	#开始
CREATE TRIGGER tri2 AFTER UPDATE ON sc FOR EACH ROW
BEGIN
	IF(new.grade > 100) OR (new.grade < 0)
THEN
	SIGNAL SQLSTATE 'HYOOO' SET message_text = '成绩应在0~100分之间';
	END IF;
END;;
delimiter;	#结束

#调用触发器
update SC
set Grade=120
where Sno='200215122'

 
查看触发器:
呓语程序缘

调用结果:
呓语程序缘

 
③ 在学生表Student中创建一个触发器tri3,当删除学生表Student中学生时,自动删除成绩表SC中相应学生的选课记录。

DROP TRIGGER if EXISTS tri3;  #避免重复出现tri3
delimiter ;;	#开始
CREATE TRIGGER tri3 AFTER DELETE ON student FOR EACH ROW
BEGIN
	DELETE FROM sc WHERE sno = old.sno;
END;;
delimiter;	#结束

#调用触发器
delete from Student where Sno = '200215122'

 
查看触发器:
呓语程序缘

调用结果:
呓语程序缘
呓语程序缘
注:删除之后 Student表 和 SC表都没有 ‘200215122’

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

要告别理想怎算活過

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

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

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

打赏作者

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

抵扣说明:

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

余额充值