news 2026/4/22 21:53:48

Mysql中触发器使用详详详详详解~

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mysql中触发器使用详详详详详解~

01什么是触发器

触发器是与表有关的数据库对象,在对表进行insert/update/delete之前或之后,会触发并执行触发器中定义的SQL语句。触发器的这种特性可以协助应用在数据库端确保数据的完整性,记录日志,校验数据等。

简单的说,就是一张表发生了某件事(插入、删除、更新操作),然后自动触发了预先编写好的若干条SQL语句的执行;

02触发器创建语法

CREATE tirgger trigger_name before/after insert/update/delete on table_name for each row begin tigger stmt; end; trigger_name:命名时最好使用table_time_event方式命令。 Table及表名,time有before、after,event有insert、update、delete, FOR EACH ROW

表示任何一条记录上的操作满足触发事件都会触发该触发器,也就是说触发器的触发频率是针对每一行数据触发一次.

03如何查看触发器

  • 查看数据库里有哪些触发器:

Show triggers;

  • 查看某个触发器的内容:

SHOW CREATE TRIGGER trigger_name;

然后把SQL Original Statement列的内容复制粘贴出来即可。

  • 删除触发器:

Drop trigger trigger_name;

  • 修改触发器:

无,先删除,再新建。

04NEW和OLD的使用

MySQL 中定义了 NEW 和 OLD加列名,用来表示触发器所在表中,触发了触发器的那一行数据,来引用触发器中发生变化的记录内容我们可以使用它们来获取被修改的对象和修改后的对象。

  • 在INSERT型触发器中,NEW用来表示将要(BEFORE)或已经(AFTER)插入的新数据;

  • 在UPDATE型触发器中,OLD用来表示将要或已经被修改的原数据,NEW用来表示将要或已经修改为的新数据;

  • 在DELETE型触发器中,OLD用来表示将要或已经被删除的原数据;

另外,OLD是只读的,而NEW则可以在触发器中使用 SET 赋值,这样不会再次触发触发器,造成循环调用

05触发器实例

实例1:给student表插入数据后记录其操作记录。

create trigger student_after_insert after insert on student for each row begin insert into student_history(userid,action,optime) values(NEW.sno,'insert',now()); end

实例2:删除学生表数据后同时删除成绩表中对应学生的成绩信息,保持了数据的完整性,一致性。​​​​​​​

create trigger student_after_delte AFTER DELETE on student for each row begin DELETE from sc where sc.sno=old.sno; end

实例3:修改成绩表成绩,如果修改成了负数则将其改为0,如果成绩大于100,则修改成100​​​​​​​

create trigger sc_before_update before update on sc for each row begin if new.score<0 then set new.score=0; elseif new.score>100 then set new.score=100; end if; end

以上是我们较常见的“Mysql中触发器使用详解的内容,希望对做这些工作的小伙伴有帮助~大家觉得文章有用的话一定要关注我们,每天来这里和小编一起学习涨薪技能哦。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 12:56:36

PyTorch模型加载Qwen3-32B时报OOM?显存优化建议

PyTorch加载Qwen3-32B显存爆炸&#xff1f;一文讲透高效运行方案 在构建企业级AI系统时&#xff0c;你是否曾遇到这样的窘境&#xff1a;明明手握RTX 4090或A100&#xff0c;却连一个开源的Qwen3-32B都加载不起来&#xff1f;屏幕上赫然弹出“CUDA out of memory”&#xff0c…

作者头像 李华
网站建设 2026/4/19 3:12:01

PN学堂-《电子元器件》- 电容

电容&#xff0c;作为电子电路中最基础、最普遍的无源元件之一&#xff0c;其“隔直通交”的基本特性看似简单&#xff0c;却在不同电路场景中展现出丰富而多样的功能。在PN学堂的电子元器件课程中&#xff0c;我们特别强调&#xff1a;理解电容不能只看参数&#xff0c;更要结…

作者头像 李华
网站建设 2026/4/20 19:34:51

LangChain+Seed-Coder-8B-Base构建企业级代码自动化系统

LangChain Seed-Coder-8B-Base 构建企业级代码自动化系统 在现代软件研发节奏日益加快的背景下&#xff0c;企业对开发效率、代码质量与团队协作一致性的要求达到了前所未有的高度。传统“人写代码—机器执行”的线性模式正悄然被“人机协同编程”所取代。智能补全、函数自动生…

作者头像 李华
网站建设 2026/4/22 17:05:20

Modbus转EtherCAT网关:真空浓缩设备的 “通讯加速器”

在现代工业自动化领域&#xff0c;Modbus RTU和EtherCAT是两种广泛使用的通信协议&#xff0c;它们分别扮演着重要的角色。将Modbus RTU协议转换为EtherCAT协议&#xff0c;并分析其在真空浓缩设备中的应用。Modbus RTU是一种串行通信协议&#xff0c;广泛应用于各种工业设备中…

作者头像 李华
网站建设 2026/4/18 7:32:18

华大HC32F460配置JTAG调试引脚为普通GPIO(PB03、PA15等)

背景 由于项目需要&#xff0c;使用的SWD调试对芯片进行下载与调试&#xff0c;未使用JTAG相关功能&#xff0c;同时GPIO引脚不够用&#xff0c;于是需要将PB03(JTDO/SWO)和PA15(JTDI)设置为普通的GPIO来使用&#xff1b; 问题 由于PB03(JTDO/SWO)和PA15(JTDI)默认用于JTAG功能…

作者头像 李华
网站建设 2026/4/16 12:20:30

LobeChat主题定制教程:打造品牌专属的AI交互界面

LobeChat主题定制教程&#xff1a;打造品牌专属的AI交互界面 在企业纷纷拥抱AI的今天&#xff0c;一个智能聊天界面是否“像自己”&#xff0c;往往比它用了哪个大模型更关键。用户打开网页&#xff0c;第一眼看到的不是GPT-4还是Claude&#xff0c;而是颜色、字体、Logo——这…

作者头像 李华