MySQL触发器使用指南大全

一、介绍

触发器是与表有关的数据库对象,指在insert/update/delete之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。
使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发(比如说 一条语句影响了 5 行 则会被触发 5 次),不支持语句级触发(比如说 一条语句影响了 5 行 则会被触发 1 次)。

触发器类型NEW 和 OLD
INSERTNEW 表示将要或者已经新增的数据
UPDATEOLD表示修改之前的数据,NEW表示将要或已经修改后的数据
DELETEOLD表示将要或者已经删除的数据

 

二、触发器-语法
 

创建
CREATE TRIGGER trigger_name

BEFORE/AFTER INSERT/UPDATE/DELETEON

tbl_name FOR EACH ROW         --行级触发器BEGIN

BEGIN

        trigger_stmt ;

END;

查看
SHOW TRIGGERS ;


删除
DROP TRIGGER [schema_name]trigger_name; --如果没有指定schema_name,默认为当前数据库。
 

三、触发器-案例1(insert类型)

--插入数据触发器如下:
create trigger tb_user_insert_trigger
after insert on tb_user for each row

begin

insert into user_logs(id, operation,operate_time,operate_id,operate_params)VALUES(null, 'insert ', now(),new.id, concat( '插入的数据内容为: id=' , new.id , ' , name=' ,new.name) );

end;

--查看触发器

SHOW TRIGGERS ;

--删除触发器

DROP TRIGGER tb_user_insert_trigger

四、触发器-案例2(update类型)

--更新数据触发器如下:
create trigger tb_user_update_trigger
after update on tb_user for each row

begin

insert into user_logs(id, operation,operate_time,operate_id,operate_params)VALUES(null, 'update ', now(),new.id, concat('更新前的数据: id=' , old.id , ' , name=' ,old.name,'更新后的数据: id=' , new.id , ' , name=' ,new.name) );

end;

--查看触发器

SHOW TRIGGERS ;

--删除触发器

DROP TRIGGER tb_user_update_trigger

五、触发器-案例3(delete类型)

--删除数据触发器如下:
create trigger tb_user_delete_trigger
after deleteon tb_user for each row

begin

insert into user_logs(id, operation,operate_time,operate_id,operate_params)VALUES(null, 'delete', now(),old.id, concat('删除前的数据: id=' , old.id , ' , name=' ,old.name) );

end;

--查看触发器

SHOW TRIGGERS ;

--删除触发器

DROP TRIGGER tb_user_delete_trigger

六、触发器总结

MySQL触发器是在特定表上执行的存储过程,通常在插入、更新和删除数据时触发。触发器允许您在数据库操作前后执行自定义逻辑,例如验证数据的有效性、记录日志或更新其他相关表的数据。

创建MySQL触发器:

CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name
FOR EACH ROW
BEGIN-- 触发器逻辑
END;

触发器名称:您为触发器指定的唯一名称。
BEFORE / AFTER:指定触发器在操作之前或之后触发。
INSERT / UPDATE / DELETE:指定触发器在执行插入、更新或删除操作时触发。
table_name:触发器所属的表名。
FOR EACH ROW:表示触发器将为每个受影响的行执行一次。

在BEGIN和END之间编写触发器的逻辑。可以使用NEW关键字引用插入或更新的新值,使用OLD关键字引用更新或删除的旧值。

例如,以下示例是一个简单的触发器案例:

在每次插入新行到"orders"表时,自动更新"last_update"列为当前时间:

CREATE TRIGGER update_last_update
AFTER INSERT ON orders
FOR EACH ROW
BEGINUPDATE ordersSET last_update = NOW()WHERE id = NEW.id;
END;

这只是一个简单的示例,实际上可以编写更复杂的触发器逻辑来满足您的需求。

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

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

相关文章

C++之生成key-value键值三种方式(一百九十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

Web server failed to start. Port 8080 was already in use.之解决方法

问题: Web server failed to start. Port 8080 was already in use,这句错误描述意思是当前程序的端口号8080被占用了,需要将占用该端口的程序停止掉才行;错误如图所示: 解决方法: 按住winr,输入…

React 消息文本循环展示

需求 页面上有个小喇叭,循环展示消息内容 逻辑思路 设置定时器,修改translateX属性来实现滚动,判断滚动位置,修改list位置来实现无限滚动 实现效果 代码 /** Author: Do not edit* Date: 2023-09-07 11:11:45* LastEditors: …

android studio的Android Drawable Preview

Android Drawable Preview 应用后,如下图: 再也不用一个一个点开去看了 其他学习资料: 1、付费专栏《Android kotlin入门到进阶系列讲解》:https://blog.csdn.net/qq_35091074/category_11036895.html 2、免费专栏《Android kot…

【大虾送书第九期】速学Linux:系统应用从入门到精通

目录 🍭写在前面 🍭为什么学习Linux系统 🍭Linux系统的应用领域 🍬1.Linux在服务器的应用 🍬2.嵌入式Linux的应用 🍬3.桌面Linux的应用 🍭Linux的版本选择 &a…

使用PHPStudy在本地快速建立网站并实现局域网外访问(无公网IP)

文章目录 使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点,测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中,查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2.2 映…

无涯教程-JavaScript - IMPOWER函数

描述 IMPOWER函数以x yi或x yj文本格式返回加到幂的复数。求幂的复数的计算方法如下- $$(x yi)^ n r ^ ne ^ {n \theta} r ^ n \cos n \theta ir ^ n sin n \theta $$ 哪里- $$r \sqrt {x ^ 2 y ^ 2} \:\:和\:\:\theta \tan ^ {-1} \left(\frac {y} {x} \right)\:…

数字 IC 设计职位经典笔/面试题(四)

共100道经典笔试、面试题目(文末可全领) 画出 CMOS 电路的晶体管级电路图,实现 YA*BC(DE).? 画出 YABC 的 CMOS 电路图,画出 YABCD 的 CMOS 电路图。 利用与非门和或非门实现 YABC(DE)((AB’)(CD)’(CE)’)’ 三个两输入与非门&a…

【力扣每日一题】2023.9.10 课程表Ⅱ

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 今天的题目和昨天类似,不过今天要我们求出学习所有课程的先后顺序。 昨天只需要我们求出能否学习完所有课程,因此…

JAVASE事件监听

代码: import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner;import javax.swing.JButton; import javax.…

CSS文字居中对齐学习

CSS使用text-align属性设置文字对齐方式&#xff1b;text-align:center&#xff0c;这样就设置了文字居中对齐&#xff1b; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>css 水平居中</title><style>.box …

ICCV 2023 | SuS-X:仅靠类别名称微调CLIP模型,剑桥大学联合DeepMind出品

论文链接&#xff1a; https://arxiv.org/abs/2211.16198 代码仓库&#xff1a; https://github.com/vishaal27/SuS-X 对比语言图像预训练&#xff08;Contrastive Language-Image Pre-training&#xff0c;CLIP&#xff09; 已成为计算机视觉社区通向自然语言领域的一种常用的…

机器学习入门教学——交叉验证

1、简介 交叉验证是在机器学习建立模型和验证模型参数时常用的办法&#xff0c;一般被用于评估一个机器学习模型的表现。更多的情况下&#xff0c;我们也用交叉验证来进行模型选择。【注】在训练模型时&#xff0c;为了提高模型的质量&#xff0c;我们会将数据集划分为训练集、…

代码随想录Day_60打卡

①、柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 事例&#xff1a; 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;1…

UDP聊天室

1.头文件 /* * 文件名称&#xff1a;UDP.h * 创 建 者&#xff1a;crx * 创建日期&#xff1a;2023年09月3日 * 描 述&#xff1a; */ #ifndef _UDP_H #define _UDP_H#include <stdio.h> #include <sys/types.h> /* See NOTES */ #includ…

Unity 之 Material (材质)渲染3D对象的重要组件

文章目录 介绍一些代码例子 介绍 在Unity中&#xff0c;Material&#xff08;材质&#xff09;是一种用于渲染3D对象的重要组件。Material定义了对象的外观&#xff0c;包括其颜色、纹理、光照属性和反射等。以下是关于Material的详细介绍&#xff1a; 创建Material&#xff1…

云计算时代的采集利器

大家好&#xff01;在今天的知识分享中&#xff0c;我们将探讨一个在云计算环境中的爬虫应用利器——独享IP。如果你是一名爬虫程序员&#xff0c;或者对数据采集和网络爬虫有浓厚的兴趣&#xff0c;那么这篇文章将向你展示独享IP在云计算环境下的应用价值。 1. 什么是独享IP&…

冠达管理:元宇宙三年行动计划发布,高增长潜力股名单出炉

未来5年&#xff0c;国内元国际商场规划至少打破2000亿元大关。 金融监管总局9月10日发布《关于优化保险公司偿付能力监管规范的告诉》&#xff0c;优化保险公司偿付能力监管规范&#xff0c;自发布之日起施行。 金融监管总局释放重要利好&#xff0c;引导保险资金更大力度地…

ClickHouse 存算分离改造:小红书自研云原生数据仓库实践

ClickHouse 作为业界性能最强大的 OLAP 系统&#xff0c;在小红书内部被广泛应用于广告、社区、直播和电商等多个业务领域。然而&#xff0c;原生 ClickHouse 的 MPP 架构在运维成本、弹性扩展和故障恢复方面存在较大局限性。为应对挑战&#xff0c;小红书数据流团队基于开源 C…

四叶草clover配置工具:Clover Configurator for Mac

Clover Configurator是一款Mac上的工具&#xff0c;用于配置和优化Clover引导加载器。Clover引导加载器是一种用于启动macOS的开源引导加载器。它允许用户在启动时选择操作系统和配置启动选项。 Clover Configurator提供了一个可视化的界面&#xff0c;让用户可以轻松地编辑和…