深入浅出解析——MYSQL|触发器
创始人
2024-02-21 15:58:19

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。


💅文章概要:触发器是一个被指定关联到-个表的过程式数据库对象,当对一个表的特定事件出现时,它将会被激活。触发器具有MySQL语句在需要时才被执行的特点,即某条(或某些)MySQL语句在特定事件发生时自动执行,本文主要介绍一下MYSQL中六种触发器的案例。


🤟每日一言:只有你爬到山顶了,这座山才会支撑着你。

目录

1.触发器概念

2.触发器的类型

3.触发器的创建

4.触发器实例的创建和使用

(一). after insert触发器实例

(二). before insert触发器实例

(三). after delete触发器实例

(四). before delete触发器实例

(五). after update触发器实例

(六). before update触发器实例

5.触发器的删除


文章概要

1.触发器概念

2.触发器类型

3.触发器的创建

4.触发器实例的创建和使用

5.触发器的删除


1.触发器概念

触发器是一个被指定关联到-个表的过程式数据库对象,当对一个表的特定事件出现时,它将会被激活。触发器具有MySQL语句在需要时才被执行的特点,即某条(或某些)MySQL语句在特定事件发生时自动执行。例如:

●每当增加一个客户到数据库的客户基本信息表时,都检查其电话号码的格式是否正确。
●每当客户订购一个产品时,都从产品库存量中减去订购的数量。
●每当删除客户基本信息表中一个客户的全部基本信息数据时,该客户所订购的未完成订单信息也应该被自动删除。
●无论何时删除一行,都在数据库的存档表中保留一个副本。

触发器与表的关系十分密切,用于保护表中的数据。当有操作影响到触发器所保护的数据时,触发器就会自动执行,从而保障数据库中数据的完整性,以及多个表之间数据的一致性。具体而言,触发器就是MySQL响应INSERT、UPDATE和DELETE语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组MySQL语句)。需要注意的是,其他MySQL语句是不支持触发器的。


2.触发器的类型

● INSERT触发器
INSERT触发器可在INSERT语句执行之前或者之后执行,在INSERT触发器内可引用一个名为NEW的虚拟表来访问被插入的行,NEW的值可以被更新

● DELETE触发器
DELETE触发器可在DELETE语句执行之前或者之后执行,在DELETE触发器内可引用一个名为OLD的虚拟表来访问被删除的行,OLD的值不可以被更新,全部是只读的

● UPDATE触发器
UPDATE触发器可在UPDATE语句执行之前或者之后执行,在UPDATE触发器内可引用一个名为NEW的虚拟表来访问被更新的行,也可以引用一个名为OLD的虚拟表来访问更新之前的行,OLD的值全部只读,NEW的值可以被更新


3.触发器的创建

在MYSQL中,创建触发器的一般语句是:

CREATETRIGGER trigger_name trigger_time trigger_eventON tb_name FOR EACH ROW  trigger_body

其中:各参数介绍如下

trigger_name
触发器名称,用来区分不同的触发器,名称在当前数据库是唯一的
trigger_name
触发器触发的时间点,有两个参数可选:BEFORE和UPDATE。一般来说,BEFROE节点用于在执行语句执行前对触发器进行调用,AFTER节点用于在执行语句执行后对触发器进行调用。
trigger_event
触发器的事件,有三个参数可以选择:INSERT,DELETE和UPDATE
tb_name
触发器要作用的的数据表
trigger_body
触发器的主体执行语句,可以使用BEGIN...END复合语句结构,下面代码实例中均采用该种复合语句结构

因为触发器的创建和使用不能分割开来,每一个触发器的创建和调用都需要根据具体的实例创建,所以触发器实例的创建和使用全部在下一小节讲解


4.触发器实例的创建和使用

(一). after insert触发器实例

(给定了表tbl_student和tbl_teacher,每次向tbl_student表插入一条新的记录后,自动向tbl_teacher表中赋值"Frank"老师的名字)

1. 表单结构
tbl_student

表一.png


tbl_teacher

表2.png


2. after insert触发器的创建

DELIMITER //
CREATE TRIGGER after_insert_trigger AFTER INSERT ON tbl_student FOR EACH ROW
begin INSERT INTO tbl_teacher VALUES("Frank");
end//
DELIMITER ;

3. 效果展示

效果.png


(二). before insert触发器实例


(给定了表tbl_student,每次向tbl_student表插入一条新的记录后,将新插入的记录都更新为"123")

ps: before insert触发器一般用于更新new的值和检查数据


1. 表单结构
tbl_student

表一.png


2. before insert触发器的创建

DELIMITER //
CREATE TRIGGER before_insert_trigger BEFORE INSERT ON tbl_student FOR EACH ROW
begin       set new.stu_id = "123";
end//
DELIMITER ;

3. 效果展示

效果2.png


(三). after delete触发器实例


(给定了表tbl_student和tbl_teacher,每次删除tbl_student表中的记录后,自动删除tbl_teacher表中的所有记录)
1. 表单结构
tbl_student

表一.png


tbl_teacher

表2.png


2. atfer delete触发器的创建

DELIMITER //
CREATE TRIGGER after_delete_trigger after delete ON tbl_student FOR EACH ROW
begin       delete from tbl_teacher;
end//
DELIMITER ;

3. 效果展示

效果3.png


(四). before delete触发器实例


(给定了表tbl_student和tbl_student_2,每次删除tbl_student表中的记录后,自动备份该条记录到tbl_student_2表中)
1. 表单结构
tbl_student

表一.png


tbl_student_2

表3.png


2. before delete触发器的创建

DELIMITER //
CREATE TRIGGER before_delete_trigger before delete ON tbl_student FOR EACH ROW
begin       insert into tbl_student_2 values(old.stu_id);
end//
DELIMITER ;

3. 效果展示

效果4.png


(五). after update触发器实例


(给定了表tbl_student和tbl_student_2,每次更新tbl_student表中的记录后,自动备份该条记录到tbl_student_2表中)
1. 表单结构
tbl_student

表一.png


tbl_student_2

表3.png


2. after update触发器的创建

DELIMITER //
CREATE TRIGGER after_update_trigger after update ON tbl_student FOR EACH ROW
begin       insert into tbl_student_2 values(old.stu_id);
end//
DELIMITER ;

3. 效果展示

效果5.png


(六). before update触发器实例


(给定了表tbl_student,每次更新tbl_student表中的记录后,自动修改其自身表中stu_id 所对应老师的名字为'Frank')

ps: before update触发器一般用于更新表自身中的数据


1. 表单结构
tbl_student

表4.png


2. before update触发器的创建

DELIMITER //
CREATE TRIGGER before_update_trigger before update ON tbl_student FOR EACH ROW
begin       set new.tea_name = 'Frank';
end//
DELIMITER ;

3. 效果展示

效果6.png


5.触发器的删除

在MYSQL中,删除触发器的一般语句是:

DROP TRIGGER [IF EXISTS] trigger_name

其中:各参数介绍如下

[IF EXISTS]
可选项,用于避免在没有触发器的情况下删除触发器
trigger_name
要删除的触发器名称

相关内容

热门资讯

联动云租一天多少钱(联动云租一... 本篇文章极速百科给大家谈谈联动云租一天多少钱,以及联动云租一天怎么划算对应的知识点,希望对各位有所帮...
飞机托运收费(飞机托运收费多少... 本篇文章极速百科给大家谈谈飞机托运收费,以及飞机托运收费多少钱一公斤对应的知识点,希望对各位有所帮助...
挡泥板(挡泥板是什么意思) 挡... 本篇文章极速百科给大家谈谈挡泥板,以及挡泥板是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏...
滴滴专车官网(滴滴专车司机网站... 今天给各位分享滴滴专车官网的知识,其中也会对滴滴专车司机网站进行解释,如果能碰巧解决你现在面临的问题...
路特斯跑车(路特斯跑车多少钱一... 今天给各位分享路特斯跑车的知识,其中也会对路特斯跑车多少钱一辆2023款进行解释,如果能碰巧解决你现...
丰田致享新车报价(丰田致享20... 今天给各位分享丰田致享新车报价的知识,其中也会对丰田致享2021款报价进行解释,如果能碰巧解决你现在...
聊城到潍坊的汽车(聊城到潍坊的... 本篇文章极速百科给大家谈谈聊城到潍坊的汽车,以及聊城到潍坊的汽车票价多少对应的知识点,希望对各位有所...
没有身份证怎么买票(没有身份证... 今天给各位分享没有身份证怎么买票的知识,其中也会对没有身份证怎么买票进行解释,如果能碰巧解决你现在面...
2018科目三灯光详细表(20... 本篇文章极速百科给大家谈谈2018科目三灯光详细表,以及2018科目三最新模拟灯光考试20组不重复完...
五菱之光v(五菱之光v和五菱之... 今天给各位分享五菱之光v的知识,其中也会对五菱之光v和五菱之光有什么区别进行解释,如果能碰巧解决你现...
摩托车怠速(摩托车怠速多少转正... 今天给各位分享摩托车怠速的知识,其中也会对摩托车怠速多少转正常进行解释,如果能碰巧解决你现在面临的问...
武汉到西安(武汉到西安火车时刻... 今天给各位分享武汉到西安的知识,其中也会对武汉到西安火车时刻表查询进行解释,如果能碰巧解决你现在面临...
五菱之光v图片(五菱之光v新车... 今天给各位分享五菱之光v图片的知识,其中也会对五菱之光v新车报价进行解释,如果能碰巧解决你现在面临的...
郑州到重庆火车(郑州到重庆火车... 本篇文章极速百科给大家谈谈郑州到重庆火车,以及郑州到重庆火车多少钱一张对应的知识点,希望对各位有所帮...
学生证优惠区间(学生证优惠区间... 今天给各位分享学生证优惠区间的知识,其中也会对学生证优惠区间没有盖章进行解释,如果能碰巧解决你现在面...
武汉到合肥(武汉到合肥多少公里... 今天给各位分享武汉到合肥的知识,其中也会对武汉到合肥多少公里进行解释,如果能碰巧解决你现在面临的问题...
软座座位分布图(k8412软座... 本篇文章极速百科给大家谈谈软座座位分布图,以及k8412软座座位分布图对应的知识点,希望对各位有所帮...
长安逸动dt(长安逸动dt空调... 本篇文章极速百科给大家谈谈长安逸动dt,以及长安逸动dt空调滤芯拆卸教程对应的知识点,希望对各位有所...
西安到达州(西安到达州火车时刻... 本篇文章极速百科给大家谈谈西安到达州,以及西安到达州火车时刻表查询对应的知识点,希望对各位有所帮助,...
野马蝰蛇(野马蝰蛇gt500图... 本篇文章极速百科给大家谈谈野马蝰蛇,以及野马蝰蛇gt500图片对应的知识点,希望对各位有所帮助,不要...
高速obu是什么意思(收费站o... 今天给各位分享高速obu是什么意思的知识,其中也会对收费站obu是什么意思进行解释,如果能碰巧解决你...
西安北站在哪(西安北站在哪进站... 今天给各位分享西安北站在哪的知识,其中也会对西安北站在哪进站进行解释,如果能碰巧解决你现在面临的问题...
汽车搭电一次多少钱(汽车搭电大... 今天给各位分享汽车搭电一次多少钱的知识,其中也会对汽车搭电大概多少钱进行解释,如果能碰巧解决你现在面...
宝马跑车敞篷价格(宝马跑车敞篷... 本篇文章极速百科给大家谈谈宝马跑车敞篷价格,以及宝马跑车敞篷价格图片对应的知识点,希望对各位有所帮助...
cbr650r(cbr650r... 本篇文章极速百科给大家谈谈cbr650r,以及cbr650r座高对应的知识点,希望对各位有所帮助,不...
在哪买机票最便宜(在哪买机票最... 今天给各位分享在哪买机票最便宜的知识,其中也会对在哪买机票最便宜票进行解释,如果能碰巧解决你现在面临...
etc办理点(etc办理点节假... 今天给各位分享etc办理点的知识,其中也会对etc办理点节假日休息吗进行解释,如果能碰巧解决你现在面...
宝马1181报价及图片(宝马1... 今天给各位分享宝马1181报价及图片的知识,其中也会对宝马1181报价及图片及价格进行解释,如果能碰...
限行处罚扣分吗(限行被扣分吗)... 本篇文章极速百科给大家谈谈限行处罚扣分吗,以及限行被扣分吗对应的知识点,希望对各位有所帮助,不要忘了...
车车(车车车念什么) 车车 车... 今天给各位分享车车的知识,其中也会对车车车念什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注...