MySQL数据库触发器讲解与案例
一、触发器语法了解
二、结合学生选课表进行实操
一、触发器语法了解:
二、结合学生选课表进行实操
学生数据库由三张表组成:xsqk、xskc、xscj,各个表的结构如下:
表1 xsqk结构
列名 |
数据类型 |
长度 |
允许空值 |
说明 |
系别 |
Char |
10 |
√ |
|
班级 |
Char |
12 |
√ |
|
专业 |
Varchar |
30 |
√ |
|
学号 |
Char |
8 |
× |
主键 |
姓名 |
Char |
8 |
× |
|
性别 |
Char |
2 |
√ |
默认值:男 |
出生年月 |
Smalldatetime |
4 |
√ |
|
总学分 |
Tinyint |
1 |
√ |
|
备注 |
Text |
16 |
√ |
表2 xskc结构
列名 |
数据类型 |
长度 |
允许空值 |
说明 |
课程号 |
Char |
3 |
× |
主键 |
课程名 |
Char |
16 |
× |
|
开课学期 |
Tinyint |
1 |
× |
规则:1~8 |
学时 |
Tinyint |
1 |
× |
|
学分 |
Tinyint |
1 |
√ |
表3 xscj结构
列名 |
数据类型 |
长度 |
允许空值 |
说明 |
学号 |
Char |
8 |
× |
主键 |
课程号 |
Char |
3 |
× |
主键 |
成绩 |
Tinyint |
1 |
√ |
|
学分 |
Tinyint |
1 |
√ |
表4 学生情况表(xsqk)数据样本
系别 |
班级 |
专业 |
学号 |
姓名 |
性别 |
出生年月 |
总学分 |
备注 |
计算机 |
计算机0203 |
计算机应用与维护 |
02020101 |
王玲玲 |
女 |
1981-8-26 |
9 |
|
计算机 |
计算机0203 |
计算机应用与维护 |
02020102 |
张燕红 |
女 |
1981-10-20 |
9 |
|
计算机 |
计算机0203 |
计算机应用与维护 |
02020103 |
杨勇 |
男 |
1982-3-15 |
||
计算机 |
计算机0203 |
计算机应用与维护 |
02020104 |
王红庆 |
男 |
1983-5-17 |
||
计算机 |
计算机0203 |
计算机应用与维护 |
02020105 |
陈园 |
女 |
1982-4-12 |
||
计算机 |
信息管理0201 |
信息管理 |
02020201 |
黄薇娜 |
女 |
1983-8-19 |
8 |
|
计算机 |
信息管理0201 |
信息管理 |
02020202 |
沈昊 |
男 |
1982-3-18 |
8 |
|
计算机 |
信息管理0201 |
信息管理 |
02020203 |
傅亮达 |
男 |
1983-1-22 |
||
计算机 |
信息管理0201 |
信息管理 |
02020204 |
任建刚 |
男 |
1981-12-21 |
||
计算机 |
信息管理0201 |
信息管理 |
02020205 |
叶小红 |
女 |
1983-7-16 |
表5 学生课程表(xskc)数据样本
课程号 |
课程名 |
开课学期 |
学时 |
学分 |
101 |
计算机文化基础 |
1 |
86 |
4 |
102 |
Qbasic |
1 |
68 |
4 |
205 |
离散数学 |
3 |
64 |
4 |
206 |
VC |
2 |
68 |
4 |
208 |
数据结构 |
2 |
68 |
4 |
210 |
操作系统 |
3 |
64 |
4 |
212 |
计算机组成 |
4 |
86 |
5 |
216 |
数据库原理 |
2 |
68 |
4 |
301 |
计算机网络 |
5 |
56 |
3 |
表6 学生成绩表(xscj)数据样本
学号 |
课程号 |
成绩 |
学分 |
02020101 |
101 |
85 |
4 |
02020101 |
102 |
70 |
5 |
02020102 |
101 |
90 |
4 |
02020102 |
102 |
80 |
5 |
02020201 |
101 |
86 |
4 |
02020201 |
208 |
80 |
4 |
02020202 |
208 |
50 |
4 |
02020202 |
216 |
60 |
4 |
对数据库操作及相关sql语句如下:
1、在学生成绩库中创建触发器trigger1,实现如下功能:当在学生成绩表(xscj)中插入一条学生选课信息后,自动实现更新该学生在学生情况表(xsqk)中的总学分信息。
分析:根据题意,要求在学生成绩表中插入一条记录时,自动更新学生情况表中的相应记录信息。可以通过在学生成绩表中定义INSERT类型的触发器,触发器中语句要完成的功能是更新学生情况表中的相应学生的总学分信息。其实,只要在该生原总学分基础上加上新选课程的学分就可以了。
在学生成绩表中插入一条记录后,可以在学生情况表中看到学号为2020202的学生的总学分由原来的8变成了现在的12。
2、创建触发器trigger3,实现当删除学生课程表中某门课程的记录时,对应学生成绩表中所有有关此课程的记录均删除。
删除计算机文化基础后,可以看到在xscj表中,相应的记录被删除。
3、创建触发器trigger4,实现当修改学生课程表(xskc)中的某门课的课程号时,对应学生成绩表(xscj)中的课程号也作相应修改。
如下图,将学生课程表中Qbasic课程的课程号改为505后,在xscj中的课程号也发生改变,变成了505
4、创建触发器trigger5,实现当向学生成绩表(xscj)中插入一条选课记录时,查看该学生的信息是否存在在学生信息表中,如果不存在,则把该学生的基本信息加入到学生信息表中。
使用以上语句,因为在xscj表中只可能插入学生的学号,而在更新xsqk表时,发现姓名是不能为空的,所以在触发器处设定姓名为“未知”。在xscj表中插入了一条学号为4444444的记录后,在xsqk表中,可以看到增加了一条相应的记录。
MySQL数据库触发器讲解与案例相关推荐
- 数据库设计讲解和案例分析 | mysql 入门
数据库设计 什么是数据库设计 数据库设计是指在数据库系统开发过程中,根据用户需求,通过对数据进行分析.抽象和建模,设计出一个合理.高效的数据库结构的过程.数据库设计的目的是为了实现数据的存储.管理.维 ...
- MySQL数据库存储过程讲解与实例
存储过程简介 SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储 ...
- MySQL数据库触发器
MySQL 数据库中触发器是一个特殊的存储过程,不同的是执行存储过程要使用 CALL 语句来调用,而触发器的 执行不需要使用 CALL 语句来调用,也不需要手工启动,只要一个预定义的事件发生就会被 M ...
- mysql数据库触发器失效,mysql 的数据库触发器解决方法
mysql 的数据库触发器 我要做一个数据库触发器,当删除数据库中的某一张表的时候触发这个一个事件,删除其他表中的某一些数据. 大家给个例子 ------解决方案------------------- ...
- MySQL数据库深度讲解
文章目录 mySQL深度讲解 Oracle 和 MySQL 比较 第一章 数据库设计 彻底搞定MySQL乱码问题 常见的字符集 数据库存储引擎 mySQL命令帮助 第三章 mySQL 语言结构 SQL ...
- MySQL数据库触发器(trigger)
MySQL触发器(trigger):监视某种情况并触发某种操作 一:四要素 触发时间:before/after 地点:table 监视操作:insert/update/delete 触发操作:inse ...
- MySQL数据库----触发器
触发器-trigger 触发器:监视某种情况,并触发某种操作. 使用触发器可以定制用户对表进行[增.删.改]操作时前后的行为,注意:没有查询 -- 触发器:某种程序触发了工具的运行 -- 触发器不能主 ...
- MySQL数据库常见报错案例与错误代码说明
实例报错问题分析与解决方法: -报错1: Can't open file: 'xxx_forums.MYI'. (errno: 145) 问题分析: 这种情况是不能打开 cdb_forums.MYI造 ...
- IDEA使用JDBC链接MySql数据库(使用工具类)案例转转好物购物平台
首先准备好数据库: 数据库由于无法展示 私聊 发数据库脚本 导入扎包: 建立基本结构 在dao包中的结构(dao包下建立建立impl包)具体结构如下: 6.在pojo下的结构(其中写的是具体的数据 ...
最新文章
- 技术大佬们都推荐的vim学习指南来了,值得收藏!
- 按键控制LED实现启动、停止按钮
- linux如何锁定文件夹,如何在没有加密的情况下保护Linux / Unix上的文件夹? | MOS86...
- 数据库-SQL分类介绍及总结
- ctr 平滑_CTR平滑的原理,包懂!!!附代码
- 2021牛客NOIP提高组第二场T2——方格计数(组合数计数)
- PHP数据结构之三 线性表中的单链表的PHP实现
- php调用谷歌翻译接口_一个google翻译的php调用方式
- 美国大学计算机专业排名2014,2014年美国大学本科计算机专业排名
- hihocoder 1035 : 自驾旅行 III
- c 连接mysql自动断开_ESQL/C连接和断开数据库(INFORMIX) | 学步园
- java json 图片_图片路径存储且item的json化
- java多线程读取分割的文件_java多线程批量读取文件(二)--读写分离
- python string 编解码(encode b64encode)
- python计算正方形、立方体、圆、球的面积和体积
- 利用mysql客户端查询UCSC数据库
- 网络攻击中常见掩盖真实IP的攻击方式及虚假IP地址追踪溯源方法
- unity3d android访问剪贴板,Airtest 和 poco 的 swipe 接口使用总结
- FPGA项目一:1位闪烁灯设计
- USB 驱动程序(转贴)