MySQL入门教程-触发器

9.触发器

什么是触发器 触发器(trigger):监视某种情况,并进行某种操作,它的执行并不是程序调用,也不是手工启动,而是由事件来触发,例如:对一张表进行操作(插入,更新,删除)时,就会触发执行事先编辑好的若干条SQL语句。

触发器的特点与作用 触发器里面的sql语句是一个事务,具有原子性,要么全部执行,要么全部不执行。

创建语法解析
 CREATE[DEFINER = user]TRIGGER trigger_nametrigger_time trigger_eventON tbl_name FOR EACH ROW[trigger_order]trigger_body​
 trigger_time: { BEFORE | AFTER }

只触发器触发的时间节点,与紧随其后的 trigger_event: { INSERT | UPDATE | DELETE } 触发操作组合,表示在某个操作执行之前,或之后,需要调用触发器的逻辑

 trigger_order: { FOLLOWS | PRECEDES } other_trigger_name

指这个触发器在触发的时候,与其他的触发器的联动效果。如,我们当前创建的 T1 在触发之前,需要先使用另一个已有的触发器 T2,那么这段的声明就是 PRECEDES T2;我们日常操作中基本不会有联动其他触发器的场景,因此这一段直接可以 省略

 trigger_body

触发器的主体部分。如果有多个操作,即一个 sql 无法完成,那么需要使用 begin... end 语句块将多个操作的 sql 包裹起来

注意项

一、触发器只允许在原始表上创建,即不能在临时表和视图上创建

二、触发器只能绑定到当前 DB 的表上。如果尝试在 DB1 中为 DB2.tab_name 创建触发器时,控制台会报错:**[Err] 1435 - Trigger in wrong schema**

三、触发器的主体部分,如果因多个 sql 操作需要使用 **begin... end** 语句块包裹,那么,记得在 **begin** 之后重命名 mysql 的语句分隔符,在 **end** 之前使用自己重命名的结束符作为结尾!!!

因为 mysql 默认都是以分号结尾,如果我们不重命名语句分隔符,那么 begin end 中只有第一条 sql 生效,剩下的都会忽略,从而执行的结果出乎我们的预期

删除触发器

 DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name

[if exists] 是可选的,表示会删除指定的并且存在的触发器;要是不存在,也不会报错

[schema_name.] 触发器所在的 DB 库,如果不指定,就会删除当前库下的这个触发器

查看触发器

我们最习惯的写法就是,第一步先删除目标触发器,第二步就是创建自己需要的触发器,sql 如下:

 drop trigger if exists myTrigger;create trigger myTrigger......

但是,如果我们上来就这么操作,或许会不小心删除已经在运行的同名触发器!!

因此,在触发器创建之前,我们需要确认命名是否被占用,有两个方法:

一、查看当前 DB 中的全部触发器

 show TRIGGERS;

img

二、从系统内置 DB 的 **triggers** 表中查询全部触发器

 SELECT *from information_schema.`TRIGGERS`

img

我们可以通过 where 增加对字段 trigger_name 的条件过滤

一个完整的创建触发器示例:

 ​create trigger  tri_abc after inserton grade for each rowbeginselect '插入成功' into @abc;endselect @abc;    -- 显示 nullinsert into grade(name) values('测试触发器');   --插入数据select @abc;    -- 显示  插入成功

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

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

相关文章

初识Java并发,一问读懂Java并发知识文集(3)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

全院级PACS系统源码,集成放射科管理RIS系统,支持多种图像处理及三维重建功能

PACS系统是医院影像科室中应用的一种系统,主要用于获取、传输、存档和处理医学影像。它通过各种接口,如模拟、DICOM和网络,以数字化的方式将各种医学影像,如核磁共振、CT扫描、超声波等保存起来,并在需要时能够快速调取…

【项目管理】CMMI-项目总结报告模版

1、文档目录结构 2、计划与实际情况对比 3、开放工作评价

【中小型企业网络实战案例 五】配置可靠性和负载分担

【中小型企业网络实战案例 三】配置DHCP动态分配地址-CSDN博客 【中小型企业网络实战案例 四】配置OSPF动态路由协议 【中小型企业网络实战案例 二】配置网络互连互通-CSDN博客 【中小型企业网络实战案例 一】规划、需求和基本配置_大小企业网络配置实例-CSDN博客 配置VRRP联…

Android MVVM 写法

前言 Model:负责数据逻辑 View:负责视图逻辑 ViewModel:负责业务逻辑 持有关系: 1、ViewModel 持有 View 2、ViewModel 持有 Model 3、Model 持有 ViewModel 辅助工具:DataBinding 执行流程:View &g…

共享单车之数据分析

文章目录 第1关:统计共享单车每天的平均使用时间第2关:统计共享单车在指定地点的每天平均次数第3关:统计共享单车指定车辆每次使用的空闲平均时间第4关:统计指定时间共享单车使用次数第5关:统计共享单车线路流量 第1关…

关于log4j的那些坑

背景:工程中同时存在log4j.xml&log4j2.xml maven依赖如下: 此时工程实际使用的日志文件为log4j.xml 1、当同时设置log4j和log4j2的桥接依赖时 maven依赖如下: 此时启动会有警告日志: 点击告警日志链接:https://…

基于OpenAI的Whisper构建的高效语音识别模型:faster-whisper

1 faster-whisper介绍 faster-whisper是基于OpenAI的Whisper模型的高效实现,它利用CTranslate2,一个专为Transformer模型设计的快速推理引擎。这种实现不仅提高了语音识别的速度,还优化了内存使用效率。faster-whisper的核心优势在于其能够在…

YOLOv8改进 | 主干篇 | EfficientNetV1均衡缩放网络改进特征提取层

一、本文介绍 这次给大家带来的改进机制是EfficientNetV1主干,用其替换我们YOLOv8的特征提取网络,其主要思想是通过均衡地缩放网络的深度、宽度和分辨率,以提高卷积神经网络的性能。这种方法采用了一个简单但有效的复合系数,统一…

mac安装k8s环境

安装kubectl brew install kubectl 确认一下安装的版本 kubectl version --client 如果想在本地运行kubernetes 需要安装minikube brew install minikube 需要注意安装minikube需要本地的docker服务是启动的 启动 默认连接的是google的仓库 minikube start 指定阿…

HTML实战演练之贪吃蛇美食大作战

导入: 一 :粉丝要求 今天一位小伙伴私信我说,想玩HTML贪吃蛇美食大作战,自己也是学HTML的,希望我能安排一下,那么好它来了 需知: 一:别着急先看需要知道的 要用HTML开发贪吃蛇美食…

【Java中序列化的原理是什么(解析)】

🍁序列化的原理是什么? 🍁典型-----解析🍁拓展知识仓🍁Serializable 和 Externalizable 接门有何不同? 🍁如果序列化后的文件或者原始类被篡改,还能被反序列化吗?🍁serialVersionU…

【机组期末速成】指令系统|机器指令概述|操作数类型与操作类型|寻址方式|指令格式

🎥 个人主页:深鱼~🔥收录专栏:计算机组成原理🌄欢迎 👍点赞✍评论⭐收藏 目录 前言: 一、本章考点总览 二、考点分析 1、以下有关指令系统的说法中错误的是( )。 2…

直方图与均衡化

直方图 统计图像中相同像素点的数量。 使用cv2.calcHist(images, channels, mask, histSize, ranges)函数 images:原图像图像格式为uint8或float32,当传入函数时应用[]括起来,例如[img]。 channels:同样用中括号括起来&#xff…

2011年AMC8数学竞赛中英文真题典型考题、考点分析和答案解析

今天是2023年12月30日,距离2024年元旦新年还有2天时间,先预祝所有的读者和小读者想今年工作、学习进步!幸福平安! 今天距离2024年1月19日的AMC8正式比赛只有20天的时间,我们继续来看AMC8竞赛的历年真题典型考题和解析…

Android笔记(二十二):Paging3分页加载库结合Compose的实现网络单一数据源访问

Paging3 组件是谷歌公司推出的分页加载库。个人认为Paging3库是非常强大,但是学习难点比较大的一个库。Paging3组件可用于加载和显示来自本地存储或网络中更大的数据集中的数据页面。此方法可让移动应用更高效地利用网络带宽和系统资源。在具体实现上,Pa…

根据文法求对应的语言

技巧:最后得到的是终结符组成的闭包 例题: 文法G[S]: S-->AB A-->aAb|ab B-->Bc|,求对应的语言 ①S-->(aAb|ab)(Bc|) ②我们可以观察到,无论A-->aAb还是A-->ab,都一定会同时出现ab,…

PiflowX组件-WriteToKafka

WriteToKafka组件 组件说明 将数据写入kafka。 计算引擎 flink 有界性 Streaming Append Mode 组件分组 kafka 端口 Inport:默认端口 outport:默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子kafka_hostKAFKA_HOST“”无是逗号…

使用Halcon 采集图像并进行简单处理rgbl_to_gray/threshold/connection/fill_up

使用Halcon 采集图像并进行简单处理 文章目录 使用Halcon 采集图像并进行简单处理 下面介绍一个简单的采集图像的例子。在Halcon中利用图像采集接口,使用USB3.0相机实时拍摄图像。采集到图像后对图像进行简单的阀值分割处理,将有物体的区域标记出来。 &a…

抬头举手阅读YOLOV8NANO

首先用YOLOV8NANO得到PT模型,转换成ONNX,OPENCV调用,PYTHON,C,ANDROID都可以举手写字阅读YOLOV8NANO