当前位置: 首页 > news >正文

MYSQL中的触发器TRIGGER

1.概念

触发器是一个特殊的存储过程,当触发器保护的数据发生变更时就会触发。

2.特性


1.触发器与表息息相关,一般我们一个表创建六个触发器。

2.六个触发器其实是三种类六个

insert     类型 

  before | after    insert
update   类型   before | after    update
delete    类型   before | after    delete

   当我们进行这三个操作时,启动触发器。

3.触发器写法

CREATE TRIGGER trigger_name trigger_time trigger_eventON table_nameFOR EACH ROWBEGIN...END; 

4.创建触发器(实例,代码可操作)

创建一个学生表和学生详情表

-- 创建数据库
CREATE DATABASE IF NOT EXISTS Test;-- 使用数据库
USE Test;-- 创建表
CREATE TABLE IF NOT EXISTS student (id INT PRIMARY KEY,name VARCHAR(255),age INT
);
-- info详细表
CREATE TABLE stu_detail (id INT PRIMARY KEY,stu_id INT,name VARCHAR(50),age INT,address VARCHAR(100),phone VARCHAR(20)
);-- 向student表中插入多条记录
INSERT INTO student (id, name, age)
VALUES (1, 'John', 25),(2, 'Jane', 28),(3, 'Mike', 30),(4, 'Sarah', 22);-- 向student表中插入多条记录
INSERT INTO stu_detail (id, stu_id, name, age, address, phone)
VALUES (1, 1, 'John', 25, '123 Main St', '123-456-7890');INSERT INTO stu_detail (id, stu_id, name, age, address, phone)
VALUES (2, 2, 'Jane', 28, '456 Elm St', '987-654-3210');INSERT INTO stu_detail (id, stu_id, name, age, address, phone)
VALUES (3, 3, 'Mike', 30, '789 Oak St', '555-123-4567');INSERT INTO stu_detail (id, stu_id, name, age, address, phone)
VALUES (4, 4, 'Sarah', 22, '789 Oak St', '555-123-4567');

创建BEFORE INSERT触发器

该触发器作用为:插入student表时,先检查id是否存在,假如存在的话就回滚操作,并给出异常提醒,不存在才可以插入

DELIMITER //
CREATE TRIGGER before_insert_Student
BEFORE INSERT ON student
FOR EACH ROW
BEGINDECLARE idExists INT;SET idExists = (SELECT COUNT(*) FROM student WHERE id = NEW.id);IF idExists > 0 THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '插入ID已经存在,不允许插入';END IF;
END//
DELIMITER ;

 测试触发器 

id冲突

 id不冲突

 创建AFTER UPDATE触发器

改触发器功能为:

 after update 触发器,当student数据update时,stu_detail表中对应id的记录也随之变更

-- update 触发器
CREATE TRIGGER after_update_student
AFTER UPDATE ON student
FOR EACH ROW
BEGINUPDATE stu_detailSET name = NEW.name, age = NEW.ageWHERE id = NEW.id;
END;

测试触发器

更改成功

 

查看detail表是否自动变更(可发现成功更改)

 创建 AFTER DELETE触发器

CREATE TRIGGER after_delete_student
AFTER DELETE ON student
FOR EACH ROW
BEGINDELETE FROM stu_detail WHERE id = OLD.id;
END;

最后一个我就不测试了,交给大家去检测一下。

5.名词解释 

BEFORE : 代表的意识是在我们的操作(insert,update,delete) 之前就执行触发器

AFTER : 代表的意识是在我们的操作(insert,update,delete)    之后才执行触发器

NEW: 对于insert来说,是将要或者已经新增的数据条

             对于update来说,是将要或者已经修改的数据条

             delete则没有NEW

OLD:     对于delete来说,是将要或者已经删除的数据条

             对于update来说,是修改前的数据条

             insert则没有OLD

NEW和OLD需要大家想一想就知道是啥意思了。

 

相关文章:

MYSQL中的触发器TRIGGER

1.概念 触发器是一个特殊的存储过程,当触发器保护的数据发生变更时就会触发。 2.特性 1.触发器与表息息相关,一般我们一个表创建六个触发器。 2.六个触发器其实是三种类六个 insert 类型 before | after insertupdate 类型 before | af…...

用人话讲解深度学习中CUDA,cudatookit,cudnn和pytorch的关系

参考链接 本人学习使用,侵权删谢谢。用人话讲解深度学习中CUDA,cudatookit,cudnn和pytorch的关系 CUDA CUDA是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,是一种并行计算平台和编程模型&…...

【JavaEE】Servlet API 详解(HttpServletRequest类)

一、HttpServletRequest Tomcat 通过 Socket API 读取 HTTP 请求(字符串), 并且按照 HTTP 协议的格式把字符串解析成 HttpServletRequest 对象(内容和HTTP请求报文一样) 1.1 HttpServletRequest核心方法 1.2 方法演示 WebServlet("/showRequest&…...

HTML页面的全屏显示及退出全屏案例

进入全屏 requestFullscreen 接收一个参数 options(可选), options 是一个对象, 但是只有一个字段 navigationUI, 用于控制是否在元素处于全屏模式时显示导航条. 可选值为 auto, hide, show, 默认值为 auto;当元素不在文档内时, 调用requestFullScreen回失败。 退出…...

layui弹出层点回车键无限弹出解决

$(document).keydown(function (event) {if (event.keyCode 13) {$("*").blur();//去掉焦点if ($(".layui-layer-btn0").length > 0)layer.closeAll();}});...

抖音测试付费短视频:从短剧领域拓展到知识、娱乐全品类

11月16日,抖音开始测试短视频内容付费,即用户在观看创作者的内容时,部分内容需要付费解锁才能全部观看,涉及范围不仅包括此前已经进行付费试水的短剧领域,还拓展至知识、娱乐等几乎全品类内容,用户可按单条…...

代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结

代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结 文章链接:两个字符串的删除操作、编辑距离、编辑距离总结 视频链接:两个字符串的删除操作、编辑距离 1. LeetCode 583. 两个字符串的删除操作 1.1 思…...

Excel vlookup 如何使用

Excel vlookup 如何使用 打开WX, 搜索 “程序员奇点” Excel vlookup可以说是利器,非常好用的工具,用来查询 Excel 或者进行数据匹配,十分方便。 VLookuP 如何使用,不常用的同学经常容易忘记,这次做个记录&#xff…...

Latex常用特殊字符汇总

本文汇总了博主在使用Latex写文档过程中遇到的所有常用疑难字符、表达式等等及对应的Latex形式 持续更新... 目录 常用字符波浪号1. 文本模式:~2. 数学模式: ∼ \sim ∼3. 字母上方的波浪号: a ˜ \~a a˜ 字母上方角标 (数学模式强调符)箭头…...

Day1跟李沐学AI-深度学习课程00-04【预告、课程安排、深度学习介绍、安装、数据操作+数据预处理】

00 预告 《动手学深度学习》https://github.com/d2l-ai/d2l-zh 01 课程安排 02 深度学习介绍 03 安装 本地安装 使用conda/miniconda环境 conda env remove d2l-zh conda create -n -y d2l-zh python3.8 pip conda activate d2l-zh 安装需要的包 pip install -y jupyter …...

借助拧紧曲线高效管理螺栓装配防错——SunTorque智能扭矩系统

拧紧曲线作为拧紧质量的“晴雨表”,在拧紧过程中,能够实时探知到拧紧状态是否存在异常,并根据曲线特质推测出拧紧过程中遇到了什么样的问题,今天SunTorque智能扭矩系统带您了解拧紧曲线在螺栓装配防错管理中如何发挥作用。 合格的…...

李开复再度回应争议;10 月中国游戏厂商及应用出海收入 30 强出炉丨 RTE 开发者日报 Vol.86

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有…...

mysql undolog

undolog 日志介绍...

milvus数据库-管理数据库

一个 Milvus 集群最多支持 64 个数据库。 1.创建数据库 先连接数据库服务器,再创建 from pymilvus import connections, dbconn connections.connect(host"127.0.0.1", port19530)database db.create_database("book")2.连接数据库 可以改变…...

一键整合,万用万灵,Python3.10项目嵌入式一键整合包的制作(Embed)

我们知道Python是一门解释型语言,项目运行时需要依赖Python解释器,并且有时候需要安装项目中对应的三方依赖库。对于专业的Python开发者来说,可以直接通过pip命令进行安装即可。但是如果是分发给其他的Windows用户,特别是不熟悉Py…...

MAC地址注册的网络安全影响和措施分析

MAC地址注册对网络安全具有重要影响,同时也需要采取相应的措施来应对潜在的安全风险。以下是有关MAC地址注册的网络安全影响和应对措施的分析: 影响: 1. 身份验证:MAC地址注册可用于设备的身份验证,但MAC地址本身并不…...

某个订单项目记录,涉及MQ消息处理、分布式问题、幂等性等问题解决设计

文章目录 消息队列(Message Queue)什么场景下,使用消息队列?消息队列 概述 RabbitMQ 消息队列RabbitMQ 概念名词 概念RabbitMQ 流程 RabbitMQ 安装RabbitMQ 页面介绍Exchange 交换机类型Spring Boot 整合RabbitMQAmqpAdmin 与 Rab…...

excel中的OFFSET函数

介绍 OFFSET函数是确定从基点出发移动后的引用区域。它有5个参数: 第1个参数是引用的参考基点区域第2个参数是移动的行数,正数代表向下移动的行数,负数代表向上移动的行数第3个参数是移动的列数,正数代表向右移动的列数&#xf…...

力扣:168. Excel表列名称(Python3)

题目: 给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。 例如: A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ... 来源:力扣(LeetCode) 链接:力扣&…...

短视频账号矩阵系统源码/技术源码分享/技术搭建架构

短视频账号矩阵系统----技术源码分享/技术搭建架构 抖音seo又叫抖音搜索引擎,只要能做到布词,和过去的百度seo优化一样,布词,布关键词,当搜索栏搜索时可以搜索到该短视频。优化视频关键词,做好关键词的优化…...

Nginx负载均衡时,验证码老是错误

问题 正式环境里,登录之后没有跳转到之前的页面,在测试服务器上测试了一下这个BUG,不存在这个问题 问题原因 我们的服务器做了负载均衡,问题出现之后,就问了运维,负载均衡的规则是什么,默认情况…...

Unity3D ugui获取ui控件屏幕坐标

local worldPos uiGo.Transform.position local uiCamera GetUICamera() local screenPos uiCamera:WorldToScreenPoint(worldPos)...

数字化转型的“支点”是什么?

​当前,数字化转型在推动各行各业降本增效的过程中扮演着越来越重要的角色,数字化转型不仅可以提高企业的生产效率和降低企业生产经营成本,也成为了推动经济发展的新引擎。对于企业而言,想要成功推动企业数字化转型,不…...

Spring Task单机定时任务(使用及阻塞问题解决)

一、介绍 SpringTask是Spring自主研发的定时任务工具,并且存在于Spring体系中,不需要添加任何依赖 Spring Boot 默认在无任何第三方依赖的情况下使用 spring-context 模块下提供的定时任务工具 Spring Task。 我们只需要使用 EnableScheduling 注解就可…...

石原子科技亮相2023成都市信息领域新产品发布会

2023年11月13日至15日,由成都市互联网信息办公室、四川天府新区管委会、成都市经信局市新经济委、成都市农业农村局指导的以“信息创造价值 创新引领未来”为主题的成都市信息领域新产品发布会在科创生态岛1号馆举行。围绕人工智能、区块链、数字化绿色化、数字乡村…...

2023数维杯国际赛数学建模竞赛选题建议及D题思路讲解

大家好呀,2023年第九届数维杯国际大学生数学建模挑战赛今天早上开赛啦,在这里先带来初步的选题建议及思路。 目前团队正在写B题和D题完整论文,后续还会持续更新哈,大家三连关注一下防止迷路。 注意,本文只是比较简略…...

最新宝塔反代openai官方API开发接口详细搭建教程,解决502 Bad Gateway问题

一、前言 宝塔反代openai官方API接口详细教程,实现国内使用ChatGPT502 Bad Gateway问题解决, 此方法最简单快捷,没有复杂步骤,不容易出错,即最简单,零代码、零部署的方法。 二、实现前提 一台海外服务器…...

vue3 实现pdf预览

需要下载pdfjs-dist <template><a-modal class"fill-modal" v-model:open"state.visible" :title"state.modalTitle" width"50%" cancel"handleCancel"><div class"preview-btns-posi"><a-…...

【React】Redux基本使用

什么情况使用 Redux &#xff1f; Redux 适用于多交互、多数据源的场景。简单理解就是复杂 从组件角度去考虑的话&#xff0c;当我们有以下的应用场景时&#xff0c;我们可以尝试采用 Redux 来实现 某个组件的状态需要共享时 一个组件需要改变其他组件的状态时 一个组件需要…...

Banana Pi BPI-W3之RK3588安装Qt+opencv+采集摄像头画面.

场景&#xff1a;在Banana Pi BPI-W3 RK3588上做qt开发工作RK3588安装Qtopencv采集摄像头画面 2. 环境介绍 硬件环境&#xff1a; Banana Pi BPI-W3RK3588开发板、MIPI-CSI摄像头( ArmSoM官方配件 )软件版本&#xff1a; OS&#xff1a;ArmSoM-W3 Debian11 QT&#xff1a;QT5…...