- 0
- 0
- 约5.28千字
- 约 28页
- 2023-04-18 发布于浙江
- 举报
;学习目标; 触发器是一种与表操作(INSERT、UPDATE、DELETE)有关的数据库对象。触发器定义了一系列操作,这一系列操作称为触发程序。当触发器所在表上出现INSERT、UPDATE以及DETETE操作时,将激活触发器,即表的操作事件触发表上的触发程序的执行。
触发器基于一个表创建,但是可以针对多个表进行操作,所以触发器可以用来对表实施复杂的完整性约束。;触发器具有以下优点:
(1)触发器自动执行。当对表进行INSERT、 UPDATE以及DETETE操作,试图修改表中的数据时,相应操作的触发器立即自动执行。
(2)触发器可以通过数据库中相关表进行层叠更改。这比直接把代码写在前台的做法更安全合理。
(3)触发器可以实现用CHECK约束实现不了的复杂约束。与CHECK约束相比,触发器可以引用其他表中的列。
(4)触发器可以维护冗余数据,实现外键级联选项等。
;CREATE TRIGGER语句语法格式如下:
CREATE TRIGGER 触发器名
AFTER/BEFORE INSERT/UPDATE/DELETE
ON 表名
FOR EACH ROW
BEGIN
SQL语句;
END;
;需要说明的是:
(1)触发器是数据库对象,因此创建触发器时,需要指定该触发器属于哪一个数据库。
(2)触发器是在表是创建的。这个表必须是基表,不能是临时表,也不能是视图。
(3)MySQL的触发事件有三种:INSERT、UPDATE及DELETE。
INSERT:将新记录插入表时激活触发程序。
UPDATE:更改表中的记录时激活触发程序。
DELETE:从表中删除记录叶激活触发程序。
(4)触发器的触发时间有两种:BEFORE和AFTER。
BEFORE表示在触发事件发生之前执行触发程序,AFTER表示在触发事件发生之后执行触发程序。
;(5)FOR EACH ROW表示行级触发器。
目前,MySQL仅支持行级触发器,不支持语句级别的触发器。FOR EACH ROW表示INSERT、UPDATE及DELETE操作影响的每一条记录都会执行一次触发程序。
(6)触发程序中的SELECT语句不能产生结果集。
(7)触发程序中可以使用old关键字与new关键字。
① 当向表中插入新记录时,在触发程序中可以使用new关键字表示新记录。当需要访问新记录中的某个字段时,可以使用“new.字段名”进行访问。
② 当从表中删除某条旧记录时,在触发程序中可以使用old??键字表示旧记录。当需要访问旧记录中的某个字段时,可以使用“old.字段名”进行访问。
;③当修改表中的某条记录时,在触发程序中可以使用new关键字表示修改后的记录。使用old关键字表示修改前的记录。当需要访问修改后的记录中的某个字段时,可以使用“new.字段名”进行访问。当需要访问旧记录中的某个字段时,可以使用“old.字段名”进行访问。
④old记录是只读的,在触发程序中只能引用它,但不能更改它。在BEFORE触发程序中,可使用“SET new.字段名=值”更改new记录的值。但在AFTER触发程序中,不能使用“SET new.字段名=值”更改new记录的值。
⑤对于INSERT操作,只有new是合法的。对于DELETE操作,只有old是合法的。对于UPDATE操作,new和old都是合法的。;一、使用触发器实现检查约束
使用触发器实现检查约束,在向学生信息表tb_xsxxb表插入记录时,XBDM字段的值或者为空,或者必须是1或2。如果XBDM字段的值不满足要求,则将XBDM的值改成为空(NULL)。
对应的SQL语句如下:
DELIMITER //
CREATE TRIGGER tr_insert BEFORE INSERT ON tb_xsxxb FOR EACH ROW
BEGIN
IF(new.XBDM IS NULL || new.XBDM NOT in (1,2)) THEN
SET new.XBDM = NULL;
END IF;
END; //
;使用触发器实现检查约束,在对学生信息表tb_xsxxb修改记录时,修改的记录XBDM字段的值或者为空,或者是1或2。如果XBDM字段的值不满足要求,则记录不能修改。
;二、使用触发器维护冗余数据
使用触发器实现:当学生信息表tb_xsxxb中的性别代码修改为1时,则将该条记录的学号、姓名、性别代码字段值放到tb_xsxxb_ns表中。
DELIMITER //
CREATE TRIGGER tr_update_ns AFTER UPDATE on tb_xsxxb FOR EACH ROW
BEGIN
IF (new.XBDM=1
您可能关注的文档
- 数据可视化分析——基于R语言(第2版)贾俊平-(02)第2章 R 语言绘图基础.pptx
- 数据可视化分析——基于R语言(第2版)贾俊平-(04)第4章 分布特征可视化.pptx
- 数据可视化分析——基于R语言(第2版)贾俊平-(05)第5章 变量间关系征可视化.pptx
- 数据可视化分析——基于R语言(第2版)贾俊平-(06)第6章 样本相似性可视化.pptx
- 数据可视化分析——基于R语言(第2版)贾俊平-(07)第7章 时间序列可视化.pptx
- 数据可视化分析——基于R语言(第2版)贾俊平-(09)第8章 概率分布可视化.pptx
- 数据可视化分析——基于R语言(第2版)贾俊平-(09)第9章 其他可视化图形.pptx
- 数据可视化分析——基于R语言(第2版)贾俊平-各章习题答案.pdf
- 数据库应用技术项目化教程-龙浩-1 预备知识 数据库基础知识.pptx
- 数据库应用技术项目化教程-龙浩-2 MySQL基础、安装和配置、创建数据库.pptx
最近下载
- 2023征信简版PDF版模板带水印可编辑.pdf VIP
- 消防安全责任制和岗位消防安全责任制.doc VIP
- 腹膜透析延续性护理-.pptx VIP
- (税务规划)最新增值税法.pdf VIP
- 公路监理工作总结范文多篇合集.docx VIP
- 〖GB_T51438-2021〗盾构隧道工程设计标准.docx VIP
- 风场B1030B叶片(地面)增强施工标准作业指导书.docx
- 卡农(C调浓情版) 钢琴谱.pdf VIP
- 2026年山东劳动职业技术学院单招(计算机)考试参考题库附答案.docx VIP
- 局党组2025年度民主生活会班子五个带头对照检查材料及2025年度民主生活会情况的报告.doc VIP
原创力文档

文档评论(0)