【MySQL进阶之路 | 基础篇】触发器

news2024/11/24 3:44:25

1. 为什么要使用触发器

  • 我们可能会遇到如下场景.我们有两个相互关联的表,如商品信息表与库存信息表.当我们向商品信息表添加一条记录时,为了保证数据完整性,也必须向库存信息表添加一条数据.
  • 我们就必须把这两个关联的操作写在程序里,用事务包裹去来,确保这两个操作是原子操作.要么一直执行,要么一起不执行.
  • 这个时候我们可以考虑使用触发器.创建一个触发器,当商品信息表插入数据时自动触发库存数据表的插入操作.

2. 触发器

(1). 语法格式

CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name
FOR EACH ROW
BEGIN 
          SQL代码块
END;
  • BEFORE/AFTER表示触发时间,是在事件前触发,还是执行事件后触发.
  • INSERT/UPDATE/DELETE表示触发的事件.如INSERT插入事件时触发.
  • FOR EACH ROW表示对受事件影响的每一行都要执行触发器.

(2). 例

7fcd4eb948484c4facd5fd278c632dcb.png

3e782b2f90c94a0da2f73700748727f4.png

3. 查看,删除触发器

(1). 查看触发器

(1). 方式1

# 查看当前数据库的所有触发器
SHOW TRIGGERS;

(2). 方式2 

# 查看数据库的某个触发器的定义
SHOW CREATE TRIGGER after_insert;
# after_insert是我定义的一个触发器

(3). 方式3

# 从系统表查看所有的触发器
SELECT * FROM information_schema.TRIGGERS;

(2). 删除触发器

DROP TRIGGER 触发器名

4. 触发器的优缺点

(1). 优点

  • 触发器可以保证数据的完整性.
  • 触发器可以帮助我们记录操作日志.
  • 触发器还可以在操作数据前,对数据进行合法性检查.

(2). 缺点

  • 最大的问题就是可读性差.因为触发器存储在数据库中,由事件驱动.意味着触发器可能不受应用层控制.对数据库维护有很大挑战.
  • 相关数据的变更,可能会导致触发器出错.进行影响数据操作的正常运行.这些都会由于触发器操作的隐蔽性,使得影响到应用错误原因的排查效率.

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

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

相关文章

【APKtool】APKtool实现某瓣APP重签名

APP name 重打包 重打包完成 开始签名 apktool签名 使用 APKtool 或其他工具生成的签名文件与原始签名文件的区别主要在于它们使用的密钥和证书可能不同。当你使用 APKtool 对 APK 文件进行反编译、修改后再重新打包时,你通常需要使用一个新的密钥和证书对修改后…

机器人非线性控制方法——线性化与解耦

机器人非线性控制方法是针对具有非线性特性的机器人系统所设计的一系列控制策略。其中,精确线性化控制和反演控制是两种重要的方法。 1. 非线性反馈控制 该控制律采用非线性反馈控制的方法,将控制输入 u 分解为两个部分: α(x): 这是一个与…

计算机毕业设计 | springboot养老院管理系统 老人社区管理(附源码)

1,绪论 1.1 背景调研 养老院是集医疗、护理、康复、膳食、社工等服务服务于一体的综合行养老院,经过我们前期的调查,院方大部分工作采用手工操作方式,会带来工作效率过低,运营成本过大的问题。 院方可用合理的较少投入取得更好…

HTML5 + CSS3模拟庆余年中“五竹”的镭射眼动画特效

庆余年2已经火热开播了,据说反响强烈啊,不知道这一部里面,五竹的镭射眼会不会表现出来,我还挺想看看他的镭射眼的,我看到底有没有杀死剧中的庆帝。 回想第一部,我都快记不清那是几年前开播的了,…

Ubuntu 安装 LibreOffice

1. 删除预安装的LibreOffice Ubuntu 和其他的 Linux 发行版带有预安装的 LibreOffice。这可能不是最新的,这是因为发行版有特定的发行周期。在进行新安装之前,你可以通过以下命令删除 Ubuntu 及其衍生发行版中的的旧版本。 sudo apt remove –purge li…

VScode SSH连接远程服务器报错

一、报错 通过VScode SSH插件远程连接服务器,输入密码后没有连接成功,一直跳出输入密码界面,在输出界面里,一直是Waiting for server log或者是显示Cannot not find minimist 二、处理 🐱: 这个时候应该…

安全工程师考试摸拟试题

安全工程师考试摸拟试题安全工程师是指在工程项目中负责安全管理和安全技术服务的专业人员。他们需要具备扎实的理论知识和丰富的实践经验,能够有效预防和控制各类安全风险… 1 安全工程师考试摸拟试题 安全工程师是指在工程项目中负责安全管理和安全技术服务的专业…

Vue开发实例(十三)用户登录功能

使用Vue实现登录具有以下几个好处: 响应式界面:Vue框架的响应式特性可以帮助开发者轻松地实现用户登录界面的交互效果,包括表单验证、实时错误提示等,从而提升用户体验。组件化开发:Vue框架支持组件化开发,…

pillow学习3

Pillow库中,图像的模式代表了图像的颜色空间。以下是一些常见的图像模式及其含义: L(灰度图):L模式表示图像是灰度图像,每个像素用8位表示(范围为0-255),0表示黑色&#…

国家开放大学-实验3:类、对象、方法和修饰符的使用

作业答案 联系QQ:1603277115 实验目的 通过本实验,了解和掌握类、方法以及各个修饰符的使用。 问题描述 基于面向对象思想和类的方式,创建一个计算金额的程序。 啤酒 3.5元/罐, 方便面 4.5元/包, 矿泉水 2.0 元/瓶。 优惠规…

【Linux】信号之信号的产生详解

🤖个人主页:晚风相伴-CSDN博客 💖如果觉得内容对你有帮助的话,还请给博主一键三连(点赞💜、收藏🧡、关注💚)吧 🙏如果内容有误的话,还望指出&…

Java入门基础学习笔记50——ATM系统

1、项目演示; 2、项目技术实现; 1)面向对象编程: 每个账户都是一个对象,所以要设计账户类Account,用于创建账户对象封装账户信息。ATM同样是一个对象,需要设计ATM类,代表ATM管理系…

打破壁垒,实现多引擎3D内容轻量化交付|点量云流

随着应用场景的不断拓展,传统的视频流技术已难以满足日益复杂的需求。当前市场上的视频流解决方案支持的引擎基本是UE、Unitiy输出的exe3D应用,在处理WebGL等3D内容时,也存在诸多局限性,例如性能限制、跨平台兼容性问题、无法直接…

玩转OpenHarmony PID:教你打造两轮平衡车

简介 此次为大家带来的是OpenAtom OpenHarmony(以下简称“OpenHarmony”)系统与PID控制算法相结合并落地的平衡车项目。 PID控制算法是一种经典的,并被广泛应用在控制领域的算法。类似于这种:需要将某一个物理量保持稳定的场合&…

java学习五

Java方法 方法是什么 方法Debug 方法定义注意点 方法总结 方法使用时的常见问题

电商内卷时代,视频号小店凭借一己之力“脱颖而出”

大家好,我是电商笨笨熊 今年618各大电商平台花样百出; 某宝更是直接取消了“预售”,从5月就开始进入618预热期; 不少玩家既开心又难过,市场如此内卷,618确实是个爆发期,但更多的需要不断压低…

数据量较小的表是否有必要添加索引问题分析

目录 前言一、分析前准备1.1、准备测试表和数据1.2、插入测试数据1.3、测试环境说明 二、具体业务分析2.1、单次查询耗时分析2.2、无索引并发查询服务器CPU占用率分析2.3、添加索引并发查询服务器CPU占用率分析 三、总结 前言 在一次节日活动我们系统访问量到达了平时的两倍&am…

普乐蛙VR元宇宙展厅VR航天航空知识长廊

有没有幻想过有生之年可以亲自开战斗机?还是大名鼎鼎的“歼-20”哦!上到四五十岁的中年人,下到十几岁的小年轻,无论男女老少,没人能逃得过炫酷到飞起的新一代战斗机!快跟上小编的脚步,带你去开V…

2024云曦期中考(部分复现)

目录 一、Web Web_SINGIN 好玩的PHP 渗透的本质 简简单单的文件上传 简简单单的sql ​编辑 二、Crypto Crypto_Singin easy_rsa 三、Misc easy_singin Xjpg 四、Pwn pwn_Sing 五、Reverse babyre easy xor 一、Web Web_SINGIN F12代码中就有flag&#xff0…

构建稳健、高效与安全的企业级API网关

在现代企业信息化建设中,各种微服务架构系统以及不同类型的管理系统广泛兴起,平台中的数据安全逐渐成为企业重视的部分,在iPaaS系统中,一个名为“企业级API网关”的功能出现在大众眼中,随着企业信息化建设的不断深入&a…