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.xdnf.cn/news/1557769.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch、Kibana学习

系列文章目录 JavaSE基础知识、数据类型学习万年历项目代码逻辑训练习题代码逻辑训练习题方法、数组学习图书管理系统项目面向对象编程&#xff1a;封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习集合学习IO流、多线程学习仓库管理系统JavaSE项目员工…

ViT(Vision Transformer详解)

Transformer作为前沿的深度学习框架&#xff0c;带有多模态的特性&#xff0c;对于不同类型的输入数据&#xff0c;不管是文本还是图像均可进行处理&#xff0c;而ViT则是对于Transformer中的视觉方面&#xff08;也就是输入数据为图像&#xff09;的衍生物&#xff08;因Trans…

知识改变命运 数据结构【优先级队列(堆)】

优先级队列(堆&#xff09; 1&#xff1a;堆概念2&#xff1a;堆的创建(以小根堆为例)3&#xff1a;堆的插入与删除3.1 堆的插入3.2堆的删除 4&#xff1a;oj练习5&#xff1a;堆排序6接口介绍&#xff08;底层代码的查看&#xff09;6.1常用三种构造方法 前言&#xff1a;队列…

Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式

单机模式 单机模式是Hadoop最简单的运行模式。在单机模式下&#xff0c;所有Hadoop组件都运行在单个机器上&#xff0c;包括HDFS、MapReduce等。由于只有一个节点参与计算&#xff0c;单机模式适用于开发和测试阶段&#xff0c;不适合用于处理大规模数据。在单机模式下&#xf…

攻防世界----->Replace

前言&#xff1a;做题笔记。 下载 查壳。 upx32脱壳。 32ida打开。 先运行看看&#xff1a; 没有任何反应&#xff1f; 猜测又是 地址随机化(ASLR)---遇见过。 操作参考&#xff1a; 攻防世界----&#xff1e;Windows_Reverse1_dsvduyierqxvyjrthdfrtfregreg-CSDN博客 然后…

UGUI(现成组合控件)

Drop Down Scroll View Scroll Bar size是滚动条的填充程度 Slider 如果设置为静态&#xff0c;那么传入的值始终为自己设置的那个值 Input Field content type为standard时 可以设置line type&#xff0c; 只读不改&#xff0c;就是可以复制&#xff0c;但是你已经不能输入了…

使用.mdf及.ldf恢复SQL SERVER数据库

文章目录 [toc]1.使用.mdf和对应的.ldf文件恢复数据库1.1 将对应的.mdf和.ldf复制到SQL SERVER路径下1.2 打开SSMS 1.使用.mdf和对应的.ldf文件恢复数据库 1.1 将对应的.mdf和.ldf复制到SQL SERVER路径下 一般默认路径是&#xff1a;C:\Program Files\Microsoft SQL Server\MS…

YOLO11改进|注意力机制篇|引入MSCA注意力机制

目录 一、【MSCA】注意力机制1.1【MSCA】注意力介绍1.2【MSCA】核心代码 二、添加【MSCA】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【MSCA】注意力机制 1.1【MSCA】注意力介绍 下图是【MSCA】的结构图&#xff0c;让我…

easyconnect配置wireshark抓包

文章目录 概述过程配置Wireshark抓包 概述 过程 配置Wireshark抓包 首先需要配置虚拟网卡SangforVPN可被Wireshark识别 重启 sc stop npcap sc start npcap# 清空路由表 netsh int ipv4 reset # 查看路由表 route print

企业建站能带来些什么?2024外包建站公司哪家好

目的的话只有企业自己知道&#xff0c;但作用还是有很多的—— 1.塑造企业精神与文化-对内 企业内部不管是否真的存在企业精神和企业文化&#xff0c;在制作网站的过程中都会考虑到这方面的内容&#xff0c;因为这是企业网站内容中不可或缺的一部分。 在企业内部还不存在所谓…

Java中的冒泡排序法

冒泡排序 排序的介绍冒泡排序法代码实现 排序的介绍 冒泡排序法 代码实现 将五个无序&#xff1a;24&#xff0c;69&#xff0c;80&#xff0c;57&#xff0c;13使用冒泡排序法将其排成一个从小到大的有序数列 public class test{public static void main(String[] args){int a…

tensorflow快速入门--如何定义张量、定义网络结构、超参数设置、模型训练???

前言 由于最近学习的东西涉及到tensorflow的使用&#xff0c;故先简单的学习了一下tensorflow中如何定义张量、定义网络结构、超参数设置、模型训练的API调用过程&#xff1b;欢迎大家&#xff0c;收藏关注&#xff0c;本人将持续更新。 文章目录 1、基本操作1、张量基础操作创…

时间序列+Transformer席卷而来,性能秒杀传统,创新性拉满,引爆顶会!

时间序列分析与Transformer模型的结合&#xff0c;已成为深度学习领域的一大趋势。这种结合能够高效捕捉序列中的长期依赖关系&#xff0c;提升时间序列分析和预测的准确性。 时间序列Transformer技术在股票价格预测、气候预测、交通流量预测、设备故障预测、自然语言处理等多…

封装vue-cropper,图片裁剪组件

组件基本使用: 这里的action同时也可以传相对路径&#xff0c;比如封装了axios&#xff0c;那么组件源码里就不能引入元素axios&#xff0c;可以替换为封装的axios。传 action"/file/upload" 源代码&#xff1a; <script setup> import WuyuCropper from /com…

【基础算法总结】字符串篇

目录 一&#xff0c;算法简介二&#xff0c;算法原理和代码实现14.最长公共前缀5.最长回文子串67.二进制求和43.字符串相乘 三&#xff0c;算法总结 一&#xff0c;算法简介 字符串 string 是一种数据结构&#xff0c;它一般和其他的算法结合在一起操作&#xff0c;比如和模拟&…

远程控制软件推荐:亲测好用!

无论是在家办公、技术支持还是远程协助家人&#xff0c;一个好的远程控制工具都能让我们的工作更加高效。下面&#xff0c;我将分享我对几款流行的远程控制软件的个人体验&#xff0c;并给出我的推荐。 向日葵远程控制 直达链接&#xff1a;down.oray.com 向日葵远程控制是…

如何实现一个基于 HTML+CSS+JS 的任务进度条

如何实现一个基于 HTMLCSSJS 的任务进度条 在网页开发中&#xff0c;任务进度条是一种常见的 UI 组件&#xff0c;它可以直观地展示任务的完成情况。本文将向你展示如何使用 HTML CSS JavaScript 来创建一个简单的、交互式的任务进度条。用户可以通过点击进度条的任意位置来…

Spring Boot读取resources目录下文件(打成jar可用),并放入Guava缓存

1、文件所在位置&#xff1a; 2、需要Guava依赖&#xff1a; <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version></dependency>3、启动时就读取放入缓存的代码&#xf…

10.8作业

优化登录框&#xff1a; 当用户点击取消按钮&#xff0c;弹出问题对话框&#xff0c;询问是否要确定退出登录&#xff0c;并提供两个按钮&#xff0c;yes|No&#xff0c;如果用户点击的Yes&#xff0c;则关闭对话框&#xff0c;如果用户点击的No&#xff0c;则继续登录 当用户点…

26.删除有序数组中的重复项

题目::26. 删除有序数组中的重复项 - 力扣&#xff08;LeetCode&#xff09; 思路:只要不和前面的数一样就可以移动指针&#xff0c;进行赋值 代码: class Solution { public:int removeDuplicates(vector<int>& nums) {int slow 0 ;for(int fast 1; fast < …