当前位置: 首页 > news >正文

2024 Mysql基础与进阶操作系列之MySQL触发器详解(20)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]

欢迎各位彦祖与热巴畅游本人专栏与博客

你的三连是我最大的动力

以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]

专栏跑道一
 ➡️ MYSQL REDIS Advance operation


专栏跑道二
➡️ 24 Network Security -LJS 

​ 

专栏跑道三

➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]

专栏跑道四
➡️RHCE-LJS[Linux高端骚骚操作实战篇]

专栏跑道五

➡️数据结构与算法[考研+实际工作应用+C程序设计]

专栏跑道六 

➡️RHCSA-LJS[Linux初级及进阶骚技能]

上节回顾icon-default.png?t=O83Ahttps://netsecur-cloud-ljs.blog.csdn.net/article/details/142601038

目录

欢迎各位彦祖与热巴畅游本人专栏与博客

你的三连是我最大的动力

以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]

专栏跑道一 ➡️ MYSQL REDIS Advance operation

专栏跑道二➡️ 24 Network Security -LJS 

专栏跑道三

➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]

专栏跑道四➡️RHCE-LJS[Linux高端骚骚操作实战篇]​编辑​

专栏跑道五

➡️数据结构与算法[考研+实际工作应用+C程序设计]

专栏跑道六 

➡️RHCSA-LJS[Linux初级及进阶骚技能]

上节回顾https://netsecur-cloud-ljs.blog.csdn.net/article/details/142601038

1.MySQL触发器详解

简介

1.1MySQL触发器基础

触发器分类

MySql执行时机和数据操作类型分类表

额外补充举例:

2.基础常用关键字

2.1MySQL触发器常用关键字详解说明表及对应示例

 1.BEFORE:

 2.AFTER:

3.FOR EACH ROW:

4.BEGIN和END:

 5.NEW:

6.OLD:

7.SET:

8.IF和THEN:

3.如何定义触发器

语法格式:

触发器定义之选项参数详解说明表:

3.2如何创建和删除触发器

创建触发器语法格式:

 删除触发器语法格式:

3.3触发器的执行时机和对应条件


1.MySQL触发器详解

简介

  • 数据库触发器是一种在特定数据操作(如插入、更新或删除)发生时自动执行的动作。本文将介绍MySQL触发器的基础知识和使用方法。

1.1MySQL触发器基础

触发器分类

MySql执行时机和数据操作类型分类表

按执行时机分类 BEFORE触发器:在数据操作之前执行触发器逻辑
AFTER触发器:在数据操作之后执行触发器逻辑
按数据操作类型分类INSERT触发器:在插入数据之前或之后执行触发器逻辑
UPDATE触发器:在更新数据之前或之后执行触发器逻辑
DELETE触发器:在删除数据之前或之后执行触发器逻辑

额外补充举例:
  • BEFORE INSERT触发器可以用于在插入数据之前验证数据完整性
  • AFTER UPDATE触发器可以用于记录数据变更日志等

 

2.基础常用关键字

2.1MySQL触发器常用关键字详解说明表及对应示例

BEFORE:

表示在数据操作之前执行触发器逻辑

 1.BEFORE:

  -- 在插入数据之前执行的逻辑CREATE TRIGGER `trigger_before_insert` BEFORE INSERT ON `mytable`
FOR EACH ROW
BEGINEND;

AFTER:

表示在数据操作之后执行触发器逻辑

 2.AFTER:

 -- 在更新数据之后执行的逻辑END;CREATE TRIGGER `trigger_after_update` AFTER UPDATE ON `mytable`FOR EACH ROWBEGIN 

FOR EACH ROW:

表示针对每一行数据执行触发器逻辑

3.FOR EACH ROW:

 -- 针对每一行删除操作执行的逻辑CREATE TRIGGER `trigger_for_each_row` AFTER DELETE ON `mytable`
FOR EACH ROW
BEGINEND;

BEGIN和END:

用于定义触发器的逻辑代码块

4.BEGIN和END:

CREATE TRIGGER `trigger_multiple_statements` AFTER INSERT ON `mytable`
FOR EACH ROW
BEGINDECLARE var INT;SET var = NEW.age + 10;IF (var > 50) THEN-- 逻辑语句1ELSE-- 逻辑语句2END IF;
END;

NEW:

代表要插入、更新或删除的新数据引用。可以通过NEW来访问新值

 5.NEW:

CREATE TRIGGER `trigger_new_value` BEFORE INSERT ON `mytable`
FOR EACH ROW
BEGINSET NEW.name = UPPER(NEW.name);
END;

OLD:

代表要更新或删除的旧数据引用。只能在UPDATE和DELETE触发器中使用

6.OLD:

CREATE TRIGGER `trigger_old_value` BEFORE UPDATE ON `mytable`
FOR EACH ROW
BEGINIF (OLD.age < NEW.age) THEN-- 逻辑语句END IF;
END;

SET:

用于设置变量的值,可用于对NEW或OLD的字段进行赋值操作

7.SET:

CREATE TRIGGER `trigger_set_value` AFTER INSERT ON `mytable`
FOR EACH ROW
BEGINSET @total = @total + NEW.quantity;
END;

IF和THEN:

用于条件判断,控制触发器逻辑的执行流程

8.IF和THEN:

CREATE TRIGGER `trigger_if_then` BEFORE DELETE ON `mytable`
FOR EACH ROW
BEGINIF (OLD.age > 30) THEN-- 逻辑语句1ELSE-- 逻辑语句2END IF;
END;

INSERT、UPDATE、DELETE:分别表示插入、更新和删除操作的关键字,可用于在相应类型的触发器中执行相应的逻辑[不在举例;往期已经详解]

 

3.如何定义触发器

语法格式:

 -- 触发器逻辑CREATE TRIGGER trigger_name{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_nameFOR EACH ROWBEGIN   END;

触发器定义之选项参数详解说明表:

选项参数详解说明
trigger_name:触发器的名称,你可以根据需要自定
{BEFORE | AFTER}:指定触发器在数据操作之前(BEFORE)或之后(AFTER)执行
{INSERT | UPDATE | DELETE}:指定触发器在哪种类型的数据操作时触发,可以是插入数据(INSERT)、更新数据(UPDATE)或删除数据(DELETE)
table_name:指定触发器所属的表名
FOR EACH ROW:确保触发器逻辑应用于每一行受影响的数据
BEGINEND:定义了触发器逻辑的开始和结束位置,你可以在其中编写相应的代码来实现需要的业务逻辑

3.2如何创建和删除触发器

  • 创建触发器语法格式:

  • CREATE TRIGGER trigger_name ...
  •  删除触发器语法格式:

  • DROP TRIGGER IF EXISTS trigger_name;

3.3触发器的执行时机和对应条件

触发器的执行时机和对应条件表

BEFORE触发器:在数据操作之前执行
AFTER触发器:在数据操作之后执行
FOR EACH ROW:对每一行数据执行触发器逻辑

http://www.lryc.cn/news/455799.html

相关文章:

  • 找不到concrt140.dll如何修复,快来试试这6种解决方法
  • 年会工作会议会务报名签到小程序开源版开发
  • UE C++ 实时加载模型的总结
  • 实施威胁暴露管理、降低网络风险暴露的最佳实践
  • 51.哀家要长脑子了!
  • Overleaf 无法显示图片
  • 如何实现 C/C++ 与 Python 的通信?
  • 音视频入门基础:FLV专题(13)——FFmpeg源码中,解析任意Type值的SCRIPTDATAVALUE类型的实现
  • jvm里的metaspace oom 排查问题思路-使用MAT
  • 2025舜宇招聘【内推码】
  • APP自动化搭建与应用
  • kafka-windows集群部署
  • 4个顶级的大模型推理引擎
  • Oracle中ADD_MONTHS()函数详解
  • 【SQL】掌握SQL查询技巧:高效数据整合与查询优化
  • 一个月学会Java 第5天 控制结构
  • 世界职业院校技能大赛(大数据技术与应用)参赛项目介绍内容模拟示例参考
  • 【Python】文件及目录
  • OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3566移植案例(下)
  • 霓虹灯数字时钟(可复制源代码)
  • 大模型微调技术之 LoRA:开启高效微调新时代
  • 【Vue】Vue2(2)
  • 如何实现一个基于 HTML+CSS+JS 的任务进度条
  • 学会流体力学,冬天洗澡再也不冷啦
  • WPF下使用FreeRedis操作RedisStream实现简单的消息队列
  • 踩坑NVTX
  • Ubuntu修改IP方法
  • C++——STL简介
  • [linux] 磁盘清理相关
  • 【笔记】DDD领域驱动设计