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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容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号就收到了阿里云寄给我的【乘风者计划】博主证书和奖励。好兆头啊! 我收到的是我获得的【技术博主】【星级博主】【专家博主】三个的奖品和证书,一快给我寄过来哒!
3027 2
收到阿里云【乘风者计划】博主证书和奖励
|
10月前
|
存储 安全 关系型数据库
2024 Mysql基础与进阶操作系列之MySQL触发器详解(21)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
MySQL触发器的使用场景之数据完整性约束、如何具体创建person的日志表、触发器与存储过程的对比与选择、触发器的性能和注意事项等具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
应用服务中间件 nginx Windows
音视频系列六:Windows搭建Nginx+rtmp推流服务器
在前面 阿里云服务器搭建Nginx+rtmp推流服务器 中,我们已经配置把阿里云的rtmp推流服务搭建好了,用的是PC软件OBS来进行推流到阿里云服务器转发然后本地拉流。Windows也是大同小异,现在是用Windows进行推流服务的搭建,本地ffmpeg命令行推流,本地ffplay拉流播放/VLC拉流播放。
1393 0
音视频系列六:Windows搭建Nginx+rtmp推流服务器
|
10月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
971 0
|
11月前
|
存储 弹性计算 人工智能
阿里云弹性计算_通用计算专场精华概览 | 2024云栖大会回顾
阿里云弹性计算产品线、存储产品线产品负责人Alex Chen(陈起鲲)及团队内多位专家,和中国电子技术标准化研究院云计算标准负责人陈行、北京望石智慧科技有限公司首席架构师王晓满两位嘉宾,一同带来了题为《通用计算新品发布与行业实践》的专场Session。本次专场内容包括阿里云弹性计算全新发布的产品家族、阿里云第 9 代 ECS 企业级实例、CIPU 2.0技术解读、E-HPC+超算融合、倚天云原生算力解析等内容,并发布了国内首个云超算国家标准。
阿里云弹性计算_通用计算专场精华概览 | 2024云栖大会回顾
|
存储 人工智能 数据处理
阿里云CTO周靖人:全面投入升级AI大基建
9月19日,在2024杭州云栖大会上,阿里云CTO周靖人表示,阿里云正在围绕AI时代,树立一个AI基础设施的新标准,全面升级从服务器到计算、存储、网络、数据处理、模型训练和推理平台的技术架构体系,让数据中心成为一台超级计算机,为每个AI和应用提供高性能、高效的算力服务。
8012 15
|
存储 关系型数据库 数据库
SQLite 与 PostgreSQL:详细比较
【8月更文挑战第13天】
970 4
|
存储 关系型数据库 MySQL
MySQL数据库进阶实战:解锁性能飙升秘籍,从菜鸟到高手的华丽蜕变,让数据操作如行云流水!
【8月更文挑战第5天】MySQL是最流行的开源关系型数据库之一,在Web开发与数据分析等领域广泛应用。本文通过实战代码示例,深入探讨MySQL进阶技能:包括索引优化以提升查询性能;利用JOIN与子查询处理多表关联数据;通过事务处理确保数据一致性;使用存储过程与函数封装复杂逻辑以便重用;设置触发器自动执行特定任务以维护数据完整性。掌握这些技能能显著提高数据处理效率与系统性能。
339 5
【权限维持】Windows&自启动&映像劫持&粘滞键&辅助屏保后门&WinLogon
【权限维持】Windows&自启动&映像劫持&粘滞键&辅助屏保后门&WinLogon
229 1
|
SQL 关系型数据库 MySQL
MySQL运行在docker容器中会损失多少性能
MySQL运行在docker容器中会损失多少性能
264 0

热门文章

最新文章

相关产品

  • 云数据库 RDS MySQL 版