文档详情

MySQL数据库应用项目式教程课件:创建触发器.pptx

发布:2025-02-18约2.77千字共23页下载文档
文本预览下载声明

创建触发器

本节内容1.创建INSERT类型触发器2.创建DELETE类型触发器3.创建UPDATE类型触发器

创建触发器触发器是一种特殊的存储过程,主要通过事件进行触发而自动执行。触发器可以在向数据表中插入、修改或删除数据时进行检查,以保证数据的完整性和一致性。创建触发器使用CREATETRIGGER语句。

01创建INSERT类型触发器

1.创建INSERT类型触发器在图形管理工具MySQL中对studb数据库中student表进行以下操作:(1)创建触发器tr_insert_student,该触发器功能为向学生表(student)中插入一行数据之前,检查total_credits字段,如果total_credits值小于5,则设置total_credits值为10,并进行测试。(2)创建触发器tr_insert_score,实现当向成绩表“score”插入一行数据时,根据成绩对学生表“student”的总学分进行修改。如果成绩=60,总学分加上该课程的学分。否则总学分不变。【任务描述】任务要求在插入数据之前对学分进行检查,所以触发时刻用BEFORE关键字,题目要求是插入数据,因此触发事件用INSERT,题目要求向学生表(student)中插入数据,所以表名用student。【任务分析】

1.创建INSERT类型触发器(1)创建触发器tr_insert_student。【任务实施】①在Navicat查询编辑器窗口输入以下SQL语句,并执行。

1.创建INSERT类型触发器【任务实施】②在Navicat查询编辑器窗口输入以下SQL语句,并执行。INSERTINTOstudentVALUES王泽,男,2004-04-13,信息工程系,22大数据1,2);③查看student表数据。插入语句中设置的total_credits字段值为2,但是student表中插入数据的total_credits字段值为10,说明我们创建的触发器起作用了。

1.创建INSERT类型触发器(2)创建触发器tr_insert_score。【任务实施】①在Navicat查询编辑器窗口输入以下SQL语句,并执行,创建触发器tr_insert_score,并执行。

1.创建INSERT类型触发器【任务实施】②在Navicat查看向score表插入数据之前student表中学号为学生的总学分total_credits。可以看出,在向score表插入数据之前学号为学生的总学分total_credits为17。

1.创建INSERT类型触发器【任务实施】③在Navicat查询编辑器窗口输入以下SQL语句,并执行,向score表中插入一条数据。

1.创建INSERT类型触发器【任务实施】④在Navicat查询编辑器窗口输入以下SQL语句,并执行,查看score表新插入的数据。SELECT*FROMscoreWHEREsno=可以看出,学号为的学生成绩插入score表中了。

1.创建INSERT类型触发器【任务实施】⑤在Navicat查询编辑器窗口输入以下SQL语句,并执行,查看student表中学号为学生的总学分total_credits。与第②步相比,学号为学生的总学分total_credits由17变为20,说明触发器tr_insert_score起作用了,在向score表中插入数据后,激活触发器tr_insert_score执行,触发器将student表中对应学号学生的总学分total_credits进行了修改。

02创建DELETE类型触发器

2.创建DELETE类型触发器在图形管理工具Navicat中对studb数据库中student表进行以下操作:创建一个触发器tr_delete_student,该触发器功能为在学生表(student)中删除一个学生记录之前,删除该学生的所有成绩记录,并进行测试。【任务描述】在编写触发器tr_delete_student时,任务要求在删除学生记录之前删除该学生的成绩记录,所以触发时刻用BEFORE关键字,题目要求是删除数据,因此触发事件用DELETE,题目要求删除学生表(student)中学生记录,所以表名用student。【任务分析】

2.创建DELETE类型触发器【任务实施】①在Navicat查询编辑器窗口输入以下SQL语句,并执行。

2.创建DELETE类型触发器【任务实施】②在Navicat查询编辑器窗口输入以下SQL语句,并执行,删除学号学生记录,然后查看score表中数据。对比上图可以看出,当执行完删除学号为2300

显示全部
相似文档