MySQL进阶之触发器

news2024/12/27 15:38:12

MySQL进阶之触发器

目录

  • MySQL进阶之触发器
    • 什么是触发器
    • 触发器的使用场景
    • 自定义触发器
    • 查看触发器
    • 删除触发器
    • 示例

什么是触发器

触发器是一种特殊的存储过程,它通常与表一起创建、修改和删除

触发器关键字:trigger,是指事先为某张表绑定一段代码,当表中的某些内容发生改变**(增、删、改)**的时候,系统会自动触发代码并执行

触发器发生错误时,前面用户已经执行成功的操作会被撤销,类似事务的回滚

触发器的使用场景

例如数据验证、数据补全、数据同步、日志记录等

自定义触发器

在创建触发器之前有一个关键字需要了解:delimiter

delimiter可以修改MySQL默认的;结束语句

delimiter ##
...
end ##
delimiter ; -- 将分隔符恢复为默认值

当需要定义复杂的多行存储语句时就可以使用delimiter

创建触发器基本语法:

delimiter 自定义结束符号
create trigger 触发器名字 触发时间 触发事件 on 表名 for each row
begin
    -- 触发器内容主体,每行用分号结尾
end
-- 自定义的结束符号

delimiter ;
  • 触发时间({BEFORE | AFTER}) :指定触发器在所触发事件之前或之后执行
  • 触发事件(insert update delete):当改事件触发时将会执行触发器主体中的代码
  • for each row表示当前触发器绑定的是实质的每一行,因此当变化都会触发该触发器

查看触发器

show triggers;

删除触发器

-- trigger_name:要删除的触发器名字
drop trigger trigger_name;

示例

创建两张学生表

create table class1 (id int primary key,name varchar(32),age int,score float);
create table class2 (id int primary key,name varchar(32),age int,score float);

添加数据

insert into class1 (id, name, age, score) VALUES
(1, 'Alice', 18, 85.5),
(2, 'Bob', 19, 92.0),
(3, 'Charlie', 20, 78.5),
(4, 'David', 21, 89.3);
insert into class2 (id, name, age, score) VALUES
(5, 'Emma', 19, 95.7),
(6, 'Frank', 20, 81.2),
(7, 'Grace', 22, 87.9),
(8, 'Henry', 18, 93.4);

创建触发器

delimiter ##
create trigger class_trigger before insert on class1
begin
update class2 set age = age + 1;
end
##
delimiter ;

delimiter ##:将结束语句修改为##
create trigger class_trigger:创建名为class_trigger的触发器
before insert on class1:在表class1执行增加操作之前执行触发器
beginend ##:以begin开头以end ##结束,中间是触发器执行的内容
delimiter ;:触发器创建完毕后将结束语句改回;

image-20240130212919029

查看表class2原内容

image-20240130212707474

对表class1进行增加操作后查看表class2的内容

image-20240130212849914

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

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

相关文章

【论文阅读笔记】Taming Transformers for High-Resolution Image Synthesis

Taming Transformers for High-Resolution Image Synthesis 记录前置知识AbstractIntroductionRelated WorkMethodLearning an Effective Codebook of Image Constituents for Use in TransformersLearning the Composition of Images with Transformers条件合成合成高分辨率图…

[ESP32 IDF]web server

目录 通过web server控制LED 核心原理解析 分区表 web server的使用 错误Header fields are too long的解决 通过web server控制LED 通过网页控制LED灯的亮灭,一般的ESP32开发板都可以实现,下面这篇文章是国外开发者提供的一个通过web server控制…

进程间通信的7种方式以及优点

七种通信方式为有名管道、无名管道、信号、消息队列、共享内存、信号灯集、套接字。 无名管道: 无名管道是没有名字的管道,是一个特殊的文件。 因为没有名字只能进行亲缘进程之间进行通信,也可以自己和自己进行通信。 无名管道打开会开启两个…

只用一台服务器部署上线(宝塔面板) 前后端+数据库

所需材料 工具:安装宝塔面板服务器至少一台、域名一个 前端:生成dist文件(前端运行build命令) 后端:生成jar包(maven运行package命令) 准备: 打开宝塔面板,点击进入软…

断电保持霍尔传感器

断电保持霍尔传感器的工作原理 断电保持霍尔传感器是一种利用变压器或共振电路的检测元件,通过检测物体与探头之间的物理距离控制电路的开关状态,从而实现对物体位置和状态的监测。该开关可以通过调试和校准以满足不同场合的要求。 断电保持霍尔传感器控…

【LeetCode】每日一题 2024_1_31 找出不同元素数目差数组(数组/哈希)

文章目录 LeetCode?启动!!!题目:找出不同元素数目差数组题目描述代码与解题思路 LeetCode?启动!!! 1 月的最后一天,每日一题又坚持了一个月呀 题目&#xff…

编程实例分享,电玩城计时电玩店计时收费管理系统软件,可以控制电视电源计时程序

编程实例分享,电玩城计时电玩店计时收费管理系统软件,可以控制电视电源计时程序 一、前言 以下教程以 佳易王电玩店计时计费软件V18.0为例说明,软件程序下载可以点击最下方官网卡片 如上图,开始计时图片改变,并记录…

智能分析网关V4+EasyCVR视频融合平台——高速公路交通情况的实时监控和分析一体化方案

随着2024年春运帷幕的拉开,不少人的返乡之旅也即将开启,从这几日的新闻来看,高速上一路飘红。伴随恶劣天气,加上激增的车流,极易导致高速瘫痪,无法正常使用。为解决此问题,助力高速高效运营&…

K8s 集群可观测性-数据分流最佳实践

简介 在微服务架构下,一个 k8s 集群中经常会部署多套业务,同时也意味着不同团队、不同角色、不同的业务会在同一集群中,需要将不同业务的数据在不同的空间进行管理和查看。 在传统的主机环境下,这个是可以通过不同的主机部署 Da…

C语言项目---贪吃蛇

目录 一 、知识铺垫1.win32API介绍 二、贪吃蛇的数据结构的设计1.整体框架2.初始化界面3.贪吃蛇的运行4.游戏的退出 三、整体代码 一 、知识铺垫 贪吃蛇涉及的知识:C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、win32API等 1.win32API介绍 Windows…

vue项目在线预览和下载文档

在线预览:利用微软提供的Office Online平台,即可实现在线预览doc、ppt、excel等文档。 地址为:https://view.officeapps.live.com/op/view.aspx 下载:若要实现下载功能,直接将url赋值给a标签的href属性即可 下载实现方…

如何从电脑恢复已删除的文件

意外删除文件可能会导致噩梦般的场景。即使文件被故意删除,您仍然可能需要恢复文件的过去草稿或版本。值得庆幸的是,有多种方法可以恢复电脑上已删除的文件,无论是否花钱。以下是四种最常见的已删除文件恢复方法。 如何从电脑恢复已删除的文件…

移动端常见布局

单独移动端页面(主流) 1,流式布局(百分比布局) 流式布局,就是百分比布局,也称非固定像素布局 通过盒子的宽度设置成百分比来根据屏幕的宽度来进行伸缩,不受固定像素的限制&#x…

第二十四天| 77. 组合

Leetcode 77. 组合 题目链接:77 组合 题干:给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。 思考:回溯法。把回溯法的搜索过程抽象为树形结构。 每次从集合中选取元素&#xff0…

京东广告算法架构体系建设--大规模稀疏场景高性能训练方案演变

一、前言 京东广告训练框架随着广告算法业务发展的特点也在快速迭代升级,回顾近几年大致经历了两次大版本的方案架构演变。第一阶段,随着2016年Tensorflow训练框架的开源,业界开始基于Tensorflow开源框架训练更复杂的模型。模型对特征规模和…

Android之命令行烧写OTA镜像(一百八十五)

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

MySQL 备份恢复

1.1 MySQL日志管理 在数据库保存数据时,有时候不可避免会出现数据丢失或者被破坏,这样情况下,我们必须保证数据的安全性和完整性,就需要使用日志来查看或者恢复数据了。 数据库中数据丢失或被破坏可能原因: 误删除数…

算法设计与分析实验:动态规划与回溯

目录​​​​​​​ 一、编辑距离 1.1 具体思路 1.2 思路展示 1.3 代码实现 1.4 复杂度分析 1.5 运行结果 二、买卖股票的最佳时机 2.1 具体思路 2.2 思路展示 2.3 代码实现 2.4 复杂度分析 2.5 运行结果 三、单词拆分 3.1 具体思路 3.2 思路展示 3.3 代码实现…

【Nginx】Ubuntu如何安装使用Nginx反向代理?

文章目录 使用Nginx反向代理2个web接口服务步骤 1:安装 Nginx步骤 2:启动 Nginx 服务步骤 3:配置 Nginx步骤 4:启用配置步骤 5:检查配置步骤 6:重启 Nginx步骤 7:访问网站 proxy_set_header 含义…

Qt程序设计-左侧菜单栏实现

创建项目,在窗体左侧添加widget,右侧上面添加容器,容器里添加label、和关闭按钮,添加stackedwidget。 widget处理 widget里面添加几个toolButton按钮,按需添加,本例子添加4个,一个弹簧verticalSpacer 将几个按钮添加到同一个按钮组。 stackedwidget stackedwidge…