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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 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;
相关文章
|
云栖大会 开发者
收到阿里云【乘风者计划】博主证书和奖励
收到阿里云【乘风者计划】博主证书和奖励 2023年2月对我来说是一个很好的开端,因为我在1号就收到了阿里云寄给我的【乘风者计划】博主证书和奖励。好兆头啊! 我收到的是我获得的【技术博主】【星级博主】【专家博主】三个的奖品和证书,一快给我寄过来哒!
3046 2
收到阿里云【乘风者计划】博主证书和奖励
|
11月前
|
存储 安全 关系型数据库
2024 Mysql基础与进阶操作系列之MySQL触发器详解(21)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
MySQL触发器的使用场景之数据完整性约束、如何具体创建person的日志表、触发器与存储过程的对比与选择、触发器的性能和注意事项等具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
消息中间件 Kafka
kafka报错: (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
kafka报错: (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
kafka报错: (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
|
应用服务中间件 nginx Windows
音视频系列六:Windows搭建Nginx+rtmp推流服务器
在前面 阿里云服务器搭建Nginx+rtmp推流服务器 中,我们已经配置把阿里云的rtmp推流服务搭建好了,用的是PC软件OBS来进行推流到阿里云服务器转发然后本地拉流。Windows也是大同小异,现在是用Windows进行推流服务的搭建,本地ffmpeg命令行推流,本地ffplay拉流播放/VLC拉流播放。
1414 0
音视频系列六:Windows搭建Nginx+rtmp推流服务器
|
11月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
735 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
自然语言处理 算法 云栖大会
通义万相发布视频生成模型,更懂中国风、中国话
通义万相发布视频生成模型,可一键创作影视级高清视频
1228 13
|
11月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
987 0
|
12月前
|
人工智能 自然语言处理 程序员
提交通义灵码创新实践文章,重磅好礼只等你来!
通义灵码创新实践征集赛正式开启,发布征文有机会获得重磅好礼+流量福利,快来参加吧!
10641 21
|
存储 人工智能 数据处理
阿里云CTO周靖人:全面投入升级AI大基建
9月19日,在2024杭州云栖大会上,阿里云CTO周靖人表示,阿里云正在围绕AI时代,树立一个AI基础设施的新标准,全面升级从服务器到计算、存储、网络、数据处理、模型训练和推理平台的技术架构体系,让数据中心成为一台超级计算机,为每个AI和应用提供高性能、高效的算力服务。
10708 15
|
存储 关系型数据库 数据库
SQLite 与 PostgreSQL:详细比较
【8月更文挑战第13天】
1042 4

相关产品

  • 云数据库 RDS MySQL 版
  • 下一篇
    oss教程