【MySQL】(基础篇十八) —— 触发器

触发器

本文学习什么是触发器,为什么要使用触发器以及如何使用触发器,还介绍创建和使用触发器的语法。

MySQL语句在需要时被执行,存储过程也是如此。但是,如果你想要某条语句(或某些语句)在事件发生自动执行,怎么办呢?例如:每当增加一个员工到数据库表时,都检查其电话号码格式是否正确,first_name是否为首字母大写;无论何时删除一行,都在某个存档表中保留一个副本。

触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句):DELETE;INSERT;UPDATE。

创建触发器

  • 触发时机:触发器可以定义为在事件发生之前(BEFORE)或之后(AFTER)执行。
  • 触发事件:主要有三种触发事件:INSERT(插入新行时)、UPDATE(更新行时)、和 DELETE(删除行时)。
  • 触发器类型:根据触发时机和事件的不同组合,可以创建不同类型的触发器,如 BEFORE INSERT、AFTER UPDATE 等。
  • 操作对象:触发器可以直接访问和操作触发它们的表(称为“触发表”),还可以访问一个名为 OLD(对于 DELETE 和 UPDATE)和 NEW(对于 INSERT 和 UPDATE)的虚拟表,用来表示触发事件前后的行状态。

触发器名必须在每个表中唯一,但不是在每个数据库中唯一。这表示同一数据库中的两个表可具有相同名字的触发器。

触发器的基本语法:

CREATE TRIGGER trigger_name
BEFORE | AFTER trigger_event ON table_name
FOR EACH ROW
BEGIN-- 触发器要执行的SQL语句
END;

删除触发器

DROP TRIGGER

使用触发器

在INSERT触发器代码内,可引用一个名为NEW的虚拟表,访问被插入的行;在BEFORE INSERT触发器中,NEW中的值也可以被更新(允许更改被插入的值);

在DELETE触发器代码内,你可以引用一个名为OLD的虚拟表,访问被删除的行,OLD中的值全都是只读的,不能更新。

在UPDATE触发器代码中,你可以引用一个名为OLD的虚拟表访问以前(UPDATE语句前)的值,引用一个名为NEW的虚拟表访问新更新的值。

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

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

相关文章

如何断点调试opencv源码

分几个步骤: 1、下载opencv-4.10.0-windows.exe https://opencv.org/releases/ 2、想要调试opencv的源码,只需要将这两个文件拷贝到我们自己项目的可执行文件的同级目录内即可。 完成拷贝后,直接在vs工程中打断点F11进行单步调试&#xff…

【漏洞复现】FastAdmin——任意文件读取漏洞

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 FastAdmin是一个免费开源的后台管理框架,其lang存在…

前端初学日记 (四) VUE指令

VUE 概述 Vue是一套用于构建用户界面的渐进式框架 Vue.js 是前端的主流框架之一 优点 1、体积小 压缩后 33K 2、更高的运行效率 3、双向数据绑定,简化 Dom 操作 基本指令 v-bind <!DOCTYPE html> <html><head><meta charset"utf-8">…

linux yum和apt指令

目录 yum apt yum和apt的区别 优缺点 总结 yum yum&#xff08;Yellowdog Updater, Modified&#xff09;是一个在Fedora、RedHat以及CentOS等基于RPM的Linux发行版中的Shell前端软件包管理器。它的主要功能包括&#xff1a; 软件包管理&#xff1a;从指定的服务器自动下…

计算机网络 —— 网络字节序

网络字节序 1、网络字节序 (Network Byte Order)和本机转换 1、大端、小端字节序 “大端” 和” 小端” 表示多字节值的哪一端存储在该值的起始地址处&#xff1b;小端存储在起始地址处&#xff0c;即是小端字节序&#xff1b;大端存储在起始地址处&#xff0c;即是大端字节…

以创新赋能引领鸿蒙应用开发,凡泰极客亮相华为HDC2024

6月21日至23日&#xff0c;华为开发者大会2024在松山湖举行。大会现场&#xff0c;华为发布了HarmonyOS、盘古大模型等方面最新进展。国内外众多企业齐聚一堂&#xff0c;共迎新商机、共创新技术、共享新体验。 凡泰极客作为鸿蒙生态的重要战略合作伙伴&#xff0c;同时也是鸿…

AUTOSAR NvM模块(二)

NvMMaxNumOfReadRetries 定义了最大读取重试次数。当前版本的NvM不支持此功能&#xff0c;因此此参数始终需要设置为0。 NvMMaxNumOfWriteRetries 定义了最大写入重试次数。当前版本的NvM不支持此功能&#xff0c;因此这个参数总是需要设置为0。 NvMNvBlockLength 定义了N…

Winform中控件与模型MVC

在Windows Forms (WinForms) 应用程序开发中&#xff0c;用户控件(UserControl)与模型(Model)的结合使用是一种常见的MVC&#xff08;Model-View-Controller&#xff09;模式的体现&#xff0c;能够有效地分离界面表示层与业务逻辑层&#xff0c;从而提高代码的可维护性和复用性…

【vue3|第14期】深入Vue3自定义Hooks:掌握组件逻辑复用的核心

日期&#xff1a;2024年6月26日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

动力环境监控系统内部绝密报价!动环监控系统全套价格一览

作为一个综合性的监控系统&#xff0c;动力环境监控系统包含动力系统、环境系统、安防系统等&#xff0c;是整个机房的控制中枢&#xff0c;无论哪里出现问题都可以实时监测到&#xff0c;并在第一时间通知管理人员。当然&#xff0c;根据机房大小和监测需求不同&#xff0c;动…

Windows系统开启python虚拟环境

.\env4socre\Scripts\activate : 无法加载文件 E:\SocreMan\env4socre\Scripts\Activate.ps1&#xff0c;因为在此系统上禁止运行脚本。 环境&#xff1a;windows 11、vscode 1、用管理员权限打开powershell 输入set-executionpolicy remotesigned&#xff0c;选择Y 2、返回v…

初识ECMAScript 6 (ES6)

ECMAScript 6 (ES6)&#xff0c;也称为 ECMAScript 2015&#xff0c;是 JavaScript 的一个主要更新&#xff0c;增加了许多新的特性和改进&#xff0c;使得编写 JavaScript 更加简洁、高效和易于维护。以下是 ES6 中的一些重要特性及其详细阐述&#xff1a; 1. 块级作用域 (Bl…

稀疏迭代最近点算法(Sparse ICP)

2013年&#xff0c;2013年Sofien Bouaziz等提出了一种新的ICP改进算法&#xff0c;稀疏迭代最近点(Sparse Iterative Closest Point, Sparse ICP)算法。更多扩展资料可参看随书附赠资源中的说明文档。 Sparse ICP算法的设计的灵感、应用范围、优缺点和泛化能力 两个几何数据集…

oninput和onchange事件有什么区别?

onchange事件&#xff1a;触发条件&#xff1a;在域内容更改时触发&#xff0c;也可用于单选框和复选框改变后触发&#xff1b;作用 对象&#xff1a;select、input、textarea。 oninput事件&#xff1a;触发事件&#xff1a;在域内容更改时触发&#xff08;严格说是用户输入时…

NAS—网络附加存储

关键词&#xff1a;私有化存储、Nas、云盘、群晖、Tailscale、 前言 身处于互联网时代的我们&#xff0c;几乎每时每刻都在与计算机打交道&#xff0c;而软件则作为我们和计算机之间沟通的桥梁&#xff0c;因此可以认为软件的作用是&#xff1a;将计算机能力进行包装&#xf…

【React】如何监听LocalStorage的变化

在代码中遇到了需要在react中监听localStorage的数据&#xff0c;下意识想到的是按照useEffect监听useState变化那一套&#xff0c;但是未生效。 代码如下&#xff1a; useEffect(()>{console.log("变化了") },[localStorage.getItem(data)])需要使用监听器 us…

Java基础入门day72

day72 mybatis mybatis的实现方式 三种实现方式&#xff1a; 纯xml方式&#xff0c;namespace随便写&#xff0c;id随便写&#xff0c;只要保证整个项目namespaceid唯一即可 xml接口的方式&#xff0c;namespace必须是接口的全路径&#xff0c;id必须是接口的方法名&#xf…

瓦罗兰特新赛季更新资讯 瓦罗兰特新赛季免费加速器

瓦罗兰特新赛季来喽&#xff0c;这是一款由拳头开发的免费第一人称射击游戏&#xff0c;游戏凭借其独特的玩法和丰富的英雄选择吸引了大量玩家。 我们可以在游戏中选择自己喜欢的角色出场与敌人进行对战&#xff0c;而且每一个角色都有自己独特的道具以及技能&#xff0c;使用好…

SwiftUI 中的内容边距

文章目录 前言创建示例适配 iPad使用 contentMargins可运行 Demo总结前言 SwiftUI 引入了一组视图修饰符,使我们能够有效地管理视图中的安全区域。在许多情况下,安全区域是你希望放置内容的地方。今天,我们将了解 SwiftUI 引入的新内容边距概念以及它与安全区域的区别。 创…

MySQL数据管理

表的基本概念 数据完整性 实体完整性 每一行必须是唯一的实体 域完整性 检查每一列是否有效 引用完整性 确保所有表中的数据的一致性&#xff0c;不允许引用不存在的值 用户定义的完整性 制定特定的业务规则 主键 用于唯一标识表中的行数据由一个或多个字段组成具有唯一性…