mysql 触发器

news2024/10/6 21:35:36

触发器:当对某张表进行 INSERT、DELETE、UPDATE 操作时,会自动触发定义的触发器中的操作。顾名思义,当我们为某张表定义触发器后,向表中添加、删除、修改数据时,会触发触发器中定义的操作,触发器像是一个事件的监听,一旦监听的事件发生,就会有所反应

mysql 只支持行级触发器

目录

1、触发器语法

1.1、创建触发器

1.2、查看触发器

1.3、删除触发器

2、示例测试

2.1、测试添加类型触发器

2.2、测试修改类型触发器

2.3、测试删除类型触发器


1、触发器语法

1.1、创建触发器

定义触发器语法格式

CREATE TRIGGER 触发器名称
BEFORE/AFTER INSERT/UPDATE/DELETE
ON 表名 FOR EACH ROW
BEGIN
内容
END;

BEFORE 或 AFTER 表示之前 还是 之后触发

INSERT 或 UPDATE 或 DELETE 表示监听 INSERT操作 还是 UPDATE操作 还是DELETE操作

示例

CREATE TRIGGER user_insert_trigger
AFTER INSERT ON user FOR EACH ROW
BEGIN
	INSERT INTO user_operation(operation_type, operation_content) values ('insert', CONCAT('添加后的数据:', new.name));
END;

为 user 表创建名为 user_insert_trigger 的触发器,触发器内容是当user表执行insert操作后,执行INSERT INTO user_operation(operation_type, operation_content) values ('insert', CONCAT('添加后的数据:', new.name)); 这个sql语句,语句中可以通过new.的形式拿到insert 到 user表的数据

这里除了new.外还有old. 

new.表示新的数据;old. 表示原来的数据

1.2、查看触发器

查看触发器

show TRIGGERS;

1.3、删除触发器

删除触发器

DROP TRIGGER 触发器名称

2、示例测试

笔者创建2张表,一张user表,一张user_operation表,然后为user表创建触发器,当user表有数据变化时,向 user_operation 表记录操作

创建 user 表

CREATE TABLE `user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `age` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

创建 user_operation 表

CREATE TABLE `user_operation`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `operation_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `operation_content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

 

2.1、测试添加类型触发器

创建添加操作的触发器

CREATE TRIGGER user_insert_trigger
AFTER INSERT ON user FOR EACH ROW
BEGIN
	INSERT INTO user_operation(operation_type, operation_content) values ('insert', CONCAT('添加后的数据:', new.name));
END;

 

在 user 表执行 insert 测试效果

INSERT INTO user(name, age) VALUES('叶绿思雨', 17);

 

2.2、测试修改类型触发器

创建修改类型的触发器

CREATE TRIGGER user_update_trigger
AFTER UPDATE ON user FOR EACH ROW
BEGIN
	INSERT INTO user_operation(operation_type, operation_content) values ('update', CONCAT('修改前的数据:', 'name:', old.name, 'age:', old.age));
	INSERT INTO user_operation(operation_type, operation_content) values ('update', CONCAT('添加后的数据:', 'name:', new.name, 'age:', new.age));
END;

show TRIGGERS;

 

更新数据

update user set name = '月星瀚浩', age = 19 where id = 4;

 

2.3、测试删除类型触发器

删除类型触发器

CREATE TRIGGER user_delete_trigger
AFTER DELETE ON user FOR EACH ROW
BEGIN
	INSERT INTO user_operation(operation_type, operation_content) values ('delete', CONCAT('删除前的数据:', 'name:', old.name, 'age:', old.age));
END;

删除数据

delete from user where id = 4

 

 

至此完

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/704393.html

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

相关文章

Python语言中while循环的应用举例

Python语言中while循环的应用举例 while循环语句是Python语言中除了for循环外另一种循环结构,是需要掌握的两大循环语句之一。本文将基于例子讲解Python语言中while循环的应用,并用两个例子说明其应用。 一、while循环语句的含义 while语句用于在满足…

vue3学习之路

Vue3简介 面临的问题:随着功能的增长,复杂组件的代码变得难以维护,Vue3 就随之而来,TypeScript 使用的越来越多,Vue3就是 TS 写的所以能够更好的支持 TypeScript 在这里介绍就这么简单 vue2 的绝大多数的特性 在 Vu…

12.通用定时器基本原理

1.通用定时器概述: (1)STM32定时器 STM32F10x系列总共最多有8个定时器: (2)三种STM32定时器区别: (3)通用定时器功能特点描述: STM32的通用TIMx(TIM2、TIM…

快速点特征直方图(FPFH)描述子提取

快速点特征直方图(Fast Point Feature Histograms,FPFH)介绍 快速点特征直方图(Fast Point Feature Histograms,FPFH)是一种基于点的描述子,用于描述点云数据中的局部几何信息。FPFH描述子是在…

Scrapy框架之认识MongoDB

目录 MongoDB 简介 特点 MongoDB的适用场景 MongoDB的行业具体应用 如何抉择是否使用MongoDB MongoDB 简介 MongoDB 是免费开源的跨平台 NoSQL 数据库,命名源于英文单词 humongous,意思是「巨大无比」,可见开发组对 MongoDB 的定位。…

go读写文件总结

别人的经验: 如今任何计算机系统每天都会产生大量的日志或数据。随着系统的增长,将调试数据存储到数据库中是不可行的,因为它们是不可变的,主要用于分析和解决故障的目的。因此,企业倾向于将其存储在文件中&#xff0…

2023一建建筑市政全彩图文教材

本《建筑学全彩图文教材》改编自2022年官方指定的最新版本一级建造师《建筑工程管理与实务》教材。适用于2023年的第一次建造考试。2023年版教材出版上市后,我们将重点关注教材。补充电子版在变更处提供。 本书忠于官方原版教材,并不删除任何知识点&…

当大模型遇到数据仓库 HashData助力LLM规模化应用

6月30日,由 IT168主办的第十六届中国系统架构师大会(SACC2023)在北京开幕。本届大会以“数字转型 架构演进”为主题,议题涵盖AIGC大数据、多云多活、云成本等多个热门领域。 在会上,酷克数据首席科学家杨胜文发表了题…

UWB超宽带定位技术的原理及定位方法

uwb定位技术即超宽带技术,它是一种无载波通信技术,利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。传统的定位技术是根据信号强弱来判别物体位置,信号强弱受外界 影响较大,因此定位出的物体位置与实际…

JAVA-编程基础-08-Java异常处理全面解析

Lison <dreamlison163.com>, v1.0.0, 2023.04.01 JAVA-编程基础-08-Java异常处理全面解析 文章目录 JAVA-编程基础-08-Java异常处理全面解析什么是异常Exception和Error的区别checked和unchecked异常”关于 throw 和 throws关于 try-catch-finally小结 try-with-resourc…

升级Xcode14.3,项目无法运行解决

报错&#xff1a;link command failed with exit code 1(use -v to see invocaiton) 原因&#xff1a;新版本Xcode删除了特定目录下的一些文件 解决&#xff1a; post_install do |installer|installer.pods_project.targets.each do |target|target.build_configurations.e…

O2OA(翱途)开发平台如何在流程表单中使用基于Vue的ElementUI组件?

本文主要介绍如何在O2OA中进行审批流程表单或者工作流表单设计&#xff0c;O2OA主要采用拖拽可视化开发的方式完成流程表单的设计和配置&#xff0c;不需要过多的代码编写&#xff0c;业务人员可以直接进行修改操作。 在流程表单设计界面&#xff0c;可以在左边的工具栏找到Ele…

Linux--显示当前路径下的所有文件指令:ls

一、ls是list的简写 二、语法&#xff1a; ls [选项] [目录或文件] 三、功能&#xff1a; ①对于目录&#xff0c;该命令列出当前目录下的所有子目录与文件。 ②对于文件&#xff0c;将列出文件名以及其他信息。 四、常用选项&#xff1a; 1.-a 列出目录下的所有文件&…

Java实现将数据转成xmind脑图(附有工具类)。

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;Java、工具类、xmind、脑图、转换☀️每日 一言&#xff1a;昨日已成过去,未来充满可能,唯有珍惜现在。 [TOPC] 前言 当谈到Xmind时&#xff0c;这是一个非常流行的思维导图工具&#xff0c;可…

超级实用!详解Node.js中的path模块和events模块

文章目录 3. path 模块路径操作方法路径格式化方法路径拆分方法 4. events 模块EventEmitter 类创建事件对象注册事件处理函数触发事件一次性事件处理函数异步事件处理函数移除事件处理函数 继承 EventEmitter 类 3. path 模块 用于处理文件路径&#xff0c;包括解析、拼接、规…

删除MySQL中名字首尾固定关键字相同的表

删除MySQL中名字首尾固定关键字相同的表 SELECT CONCAT(drop table , group_concat(TABLE_NAME), ;) FROM information_schema.TABLES WHERE table_schema test AND TABLE_NAME LIKE t_%_history ;查看表列表 SHOW TABLES;通过上图观察发现所有的表都是以 t_ 开头 和以 _his…

Mybatis-Plus学习1

mybatis-plus需要两个依赖&#xff0c;一个lombok&#xff0c;一个mybatis-plus <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version> </dependency> …

Service 基础

今天开始来分享Service 的基础知识&#xff0c;后续我们可以慢慢打磨&#xff0c;分享 Service 的进阶知识和原理 Service 基本概念 Service 是 K8S 最核心的概念了 我们可以通过创建 Service &#xff0c;为一组具有相同功能的容器应用提供一个统一的入口地址&#xff0c;并…

linux上搭建ftp服务

linux上搭建ftp服务简要过程。 1.安装 在目标主机上安装对应软件。 rpm -qa | grep vsftpd # 查看是否已经安装了vsftpd软件 yum install -y vsftpd # 安装2.配置 安装好了之后可在这个路径下编辑配置文件&#xff0c;按需配置&#xff0c;这里采用默认。 vi /etc/vsftp…

螺杆支撑座要怎么选?

螺杆支撑座是连接螺杆和电机的轴承固定座&#xff0c;使用螺杆支撑座可以获得高刚性、高精度的稳定的回转性能&#xff0c;这也是大部分厂商愿意使用的原因之一。 目前&#xff0c;市面上做螺杆支撑座的品牌还比较少&#xff0c;给大家选择的空间也不多&#xff0c;那么我们如何…