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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: MySQL触发器基础等具体操作详解步骤;精典图示-举例说明、注意点及常见报错问题所对应的解决方法IKUN和1原们你这要是学不会我直接退出江湖;好吧!!!

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

你的三连是我最大的动力

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

专栏跑道一

➡️网络空间安全——全栈前沿技术持续深入学习

image.gif

专栏跑道二

➡️ 24 Network Security -LJS

image.gif

image.gif

image.gif

专栏跑道三


➡️ MYSQL REDIS Advance operation

image.gif

专栏跑道四

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

image.gif

专栏跑道五

➡️RHCE-LJS[Linux高端骚操作实战篇]

image.png

专栏跑道六

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

image.gif

专栏跑道七

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

image.gif

image.gif

上节回顾




1.MySQL触发器详解

简介

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

1.1MySQL触发器基础

触发器分类

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

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

额外补充举例:

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

2.基础常用关键字

2.1MySQL触发器常用关键字详解说明表及对应示例[以下为SQL语句,新人第一次转移博客,比较赶]

BEFORE:

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

 1.BEFORE:


-- 在插入数据之前执行的逻辑
CREATE TRIGGER `trigger_before_insert` BEFORE INSERT ON `mytable`
FOR EACH ROW
BEGIN
END;
image.gif
AFTER:

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

 2.AFTER:


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

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

3.FOR EACH ROW:


-- 针对每一行删除操作执行的逻辑
CREATE TRIGGER `trigger_for_each_row` AFTER DELETE ON `mytable`
FOR EACH ROW
BEGIN
 
END;
image.gif
BEGIN和END:

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

4.BEGIN和END:


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

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

 5.NEW:


CREATE TRIGGER `trigger_new_value` BEFORE INSERT ON `mytable`
FOR EACH ROW
BEGIN
  SET NEW.name = UPPER(NEW.name);
END;
image.gif
OLD:

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

6.OLD:


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

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

7.SET:


CREATE TRIGGER `trigger_set_value` AFTER INSERT ON `mytable`
FOR EACH ROW
BEGIN
  SET @total = @total + NEW.quantity;
END;
image.gif
IF和THEN:

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

8.IF和THEN:


CREATE TRIGGER `trigger_if_then` BEFORE DELETE ON `mytable`
FOR EACH ROW
BEGIN
  IF (OLD.age > 30) THEN
    -- 逻辑语句1
  ELSE
    -- 逻辑语句2
  END IF;
END;
image.gif
INSERT、UPDATE、DELETE: 分别表示插入、更新和删除操作的关键字,可用于在相应类型的触发器中执行相应的逻辑[不在举例;往期已经详解]

 

image.gif 编辑

3.如何定义触发器

语法格式:

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

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

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

3.2如何创建和删除触发器

  • 创建触发器语法格式:
CREATE TRIGGER trigger_name ...
  • image.gif
  • 删除触发器语法格式:
DROP TRIGGER IF EXISTS trigger_name;
  • image.gif

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

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

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


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
JavaScript 前端开发 安全
JavaScript中的循环控制:while、do-while与for详解
【4月更文挑战第7天】本文探讨JavaScript的三种主要循环结构:while、do-while和for。while循环在满足条件时执行代码块,注意避免无限循环;do-while循环至少执行一次,适合先执行后判断的场景;for循环结合初始化、条件和迭代,适合遍历。理解每种循环的特点和适用场景,结合编程技巧,如使用break和continue,选择合适的循环方式,能提升代码效率和可读性。记得关注循环性能和避免不必要的计算。
525 0
|
虚拟化
【虚拟化】VMware 新增网卡后找不到网卡配置问题(已解决)
【虚拟化】VMware 新增网卡后找不到网卡配置问题(已解决)
2025 0
【虚拟化】VMware 新增网卡后找不到网卡配置问题(已解决)
|
SQL Java 数据库连接
挺详细的spring+springmvc+mybatis配置整合|含源代码
挺详细的spring+springmvc+mybatis配置整合|含源代码
|
应用服务中间件 nginx Windows
音视频系列六:Windows搭建Nginx+rtmp推流服务器
在前面 阿里云服务器搭建Nginx+rtmp推流服务器 中,我们已经配置把阿里云的rtmp推流服务搭建好了,用的是PC软件OBS来进行推流到阿里云服务器转发然后本地拉流。Windows也是大同小异,现在是用Windows进行推流服务的搭建,本地ffmpeg命令行推流,本地ffplay拉流播放/VLC拉流播放。
1762 0
音视频系列六:Windows搭建Nginx+rtmp推流服务器
|
人工智能 搜索推荐 数据挖掘
企业客户管理升级:销售易、白码、纷享销客CRM的功能与适用企业洞察
销售易CRM、白码CRM和纷享销客CRM各有特色。销售易CRM以移动化、社交化和AI技术为核心,适合大型企业及跨国公司,助力销售流程数字化转型。白码CRM是低代码开发平台,支持快速构建企业应用,适合中小型企业,降低数字化门槛。纷享销客CRM强调社交化客户关系管理和项目协作,适用于服务导向型企业和注重团队协作的企业。选择时应根据自身需求和规模,挑选最适合的解决方案。
|
安全 Java 数据安全/隐私保护
如何使用Spring Boot进行表单登录身份验证:从基础到实践
如何使用Spring Boot进行表单登录身份验证:从基础到实践
408 5
|
Unix Shell Linux
技术经验分享:Bash脚本命令使用详解
技术经验分享:Bash脚本命令使用详解
822 0
|
机器学习/深度学习 算法 数据库
阿里云服务器架构区别解析:从X86计算、Arm计算到高性能计算架构的区别参考
在我们选择阿里云服务器的架构时,选择合适的云服务器架构对于提升业务效率、保障业务稳定至关重要。阿里云提供了多样化的云服务器架构选择,包括X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等。本文将深入解析这些架构的特点、优势及适用场景,以供参考和选择。
阿里云服务器架构区别解析:从X86计算、Arm计算到高性能计算架构的区别参考
|
人工智能 运维 安全
阿里云飞天企业版“智算升级”,为政企打造AI时代最开放的云
阿里云正式发布飞天智算—飞天企业版V3.18,为政企客户打造AI时代最开放的云。此次升级,飞天企业版将智算能力深度融入云平台,实现“一云多算”,满足政企客户对云平台“云+AI”协同发展需求,为AI技术大规模在政企领域应用做好准备。
1287 11
|
机器学习/深度学习 人工智能 自然语言处理
自动化办公:AI如何改变工作方式
【7月更文第19天】随着人工智能技术的飞速发展,我们的工作方式正经历着前所未有的转型。从繁琐的文档处理到高效的会议安排,再到个性化的邮件回复,AI正逐步成为现代办公不可或缺的一部分。本文将深入探讨AI如何在这些核心办公场景中发挥作用,提升工作效率,优化工作流程,从而推动工作方式的全面革新。
1355 3

相关产品

  • 云数据库 RDS MySQL 版