一篇文章带你深入了解Mysql触发器


Posted in MySQL onAugust 02, 2021

基于school数据库中的student, course, sc表,创建满足下述要求的触发器:

数据库navicat cmd界面运行

1.对SC表进行插入或修改时,如果考试成绩不在0-100范围内时,则撤销插入或修改操作。

DELIMITER ;
DROP TRIGGER IF EXISTS `tri_update_grade`;
DELIMITER ;;
CREATE TRIGGER `tri_update_grade` BEFORE UPDATE ON `sc` FOR EACH ROW begin
if new.grade > 100 then
delete from sc;
elseif new.grade < 0 then
delete from sc;
end if;
end
;;
DELIMITER ;
DROP TRIGGER IF EXISTS `tri_insert_grade`;
DELIMITER ;;
CREATE TRIGGER `tri_insert_grade` BEFORE INSERT ON `sc` FOR EACH ROW begin
if new.grade > 100 then
delete from sc;
elseif new.grade < 0 then
delete from sc;
end if;
end
;;

2.对SC表进行插入时,如果学生的选课总学分超过30,则报错并撤销插入。

DELIMITER ;
DROP TRIGGER IF EXISTS `tri_insert_credit`;
DELIMITER ;;
CREATE TRIGGER `tri_insert_credit` BEFORE INSERT ON `sc` FOR EACH ROW begin
SELECT sum(Ccredit) INTO @sumcred from Student join SC on SC.Sno=Student.Sno join Course on Course.Cno=SC.Cno WHERE sc.Sno=new.Sno;
if (@sumcred>30)
then
delete from sc;
end if;
end
;;

3.对SC表进行修改时,不允许修改考试成绩不及格的学生选课记录。

DELIMITER ;
DROP TRIGGER IF EXISTS `tri_grade`;
DELIMITER ;;
CREATE TRIGGER `tri_grade` BEFORE UPDATE ON `sc` FOR EACH ROW begin
select grade INTO @gra from sc where sno=new.sno and sno=new.sno;
if (@gra >= 60)
then
set new.grade=20;
else
delete from sc;
end if;
end
;;

4.对STUDENT表进行插入时,如果年龄为空,则将该生年龄设置为所有学生年龄的平均值。

DELIMITER ;
DROP TRIGGER IF EXISTS `tri_student`;
DELIMITER ;;
CREATE TRIGGER `tri_student` BEFORE INSERT ON `student` FOR EACH ROW begin
select avg(Sage) INTO @avgage from student;
SET @old_age = new.Sage;
if @old_age IS NULL
then
set new.Sage=@avgage;
end if;
end
;;

5.在STUDENT表中增加两列,分别用来存放学生的平均成绩和等级,并对SC表进行插入后,自动维护学生的平均成绩和等级(85-100,等级为“优"; 60-85,等级为“良”,60 以下,等级为“差")

DELIMITER ;
DROP TRIGGER IF EXISTS `tri_comment`;
DELIMITER ;;
CREATE TRIGGER `tri_comment` BEFORE UPDATE ON `student` FOR EACH ROW begin
select avg(Grade) INTO @avggra from sc where sno=new.sno;
if @avggra > 85 then
update sc set new.Savg=@avggra,new.Scomment="you";
else if @avggra > 60 and @avggra <= 85 then
update sc set new.Savg=@avggra,new.Scomment="you";
else
update sc set new.Savg=@avggra,new.Scomment='cha';
end if;
end if;
end
;;
DELIMITER ;

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注三水点靠木的更多内容!

MySQL 相关文章推荐
mysql数据库入门第一步之创建表
May 14 MySQL
如何自己动手写SQL执行引擎
Jun 02 MySQL
如何搭建 MySQL 高可用高性能集群
Jun 21 MySQL
MySql 8.0及对应驱动包匹配的注意点说明
Jun 23 MySQL
MySQL 十大常用字符串函数详解
Jun 30 MySQL
MySQL里面的子查询的基本使用
Aug 02 MySQL
MySql子查询IN的执行和优化的实现
Aug 02 MySQL
MySQL中utf8mb4排序规则示例
Aug 02 MySQL
MySQL8.0升级的踩坑历险记
Nov 01 MySQL
Golang连接并操作MySQL
Apr 14 MySQL
MySQL视图概念以及相关应用
Apr 19 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
May 06 MySQL
sql注入教程之类型以及提交注入
MySQL子查询中order by不生效问题的解决方法
Aug 02 #MySQL
MySQL中utf8mb4排序规则示例
Aug 02 #MySQL
MySql子查询IN的执行和优化的实现
MySQL里面的子查询的基本使用
Aug 02 #MySQL
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
Aug 02 #MySQL
为什么MySQL选择Repeatable Read作为默认隔离级别
You might like
php常用字符串处理函数实例分析
2014/11/22 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
Javascript 错误处理的几种方法
2009/06/13 Javascript
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
2015/02/11 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
vue通过video.js解决m3u8视频播放格式的方法
2019/07/30 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
python字符串的常用操作方法小结
2016/05/21 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
python实现五子棋游戏
2019/06/18 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
python中如何使用insert函数
2020/01/09 Python
如何利用Python写个坦克大战
2020/11/18 Python
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
经验丰富大学生村干部自我鉴定
2014/01/22 职场文书
户籍证明书标准模板
2014/09/10 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
学校财务管理制度
2015/08/04 职场文书
企业法律事务工作总结
2015/08/11 职场文书
建议书的格式及范文
2015/09/14 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL