MySQL8 存储触发器是一种存储对象类型,它是与表关联的数据库对象,当表发生特定的事件时自动激活,主要用途是监测表在添加、更新和删除前后的动作,在其期间进行数据记录操作或处理计算逻辑。
MySQL5.7.2 版本之前,每个表最多可定义 6 个存储触发器,MySQL8 没有限制:
在 MYSQL8 中,触发器就是一组 SQL 语句,但对表中的数据进行更改时,会自动调用该语句,存储触发器可以被定义在 insert、update、delete 语句中。
首先,我们通过编写一个简单的存储触发器,来介绍存储触发器的语法。
# 创建测试表 create table `try8_dev` (`try8_id` int, `try8_name` varchar(200)); insert into `try8_dev`(try8_id) value(1); # 编写触发器 delimiter // create trigger try8_trig before update on try8_dev for each row begin if new.try8_id < 0 then set new.try8_name = '小于 0'; elseif new.try8_id > 10 then set new.try8_name = '大于 10'; end if; end // delimiter ; # 测试效果 update `try8_dev` set try8_id = 11; select * from `try8_dev`;
编写存储触发器关键字说明:
# 根据存储触发器名称查询 show triggers from try8 where `trigger` = 'try8_trig'; # 根据表名称查询 show triggers from try8 where `table` = 'try8_dev'; # 使用系统表根据存储触发器名称查询 select * from information_schema.triggers where trigger_name = 'try8_trig'; # 使用系统表根据表名称查询 select * from information_schema.triggers where event_object_table = 'try8_dev';
您可以通过删除表来自动删除对应的触发器,也可以手动删除,手动需要指定前缀数据库名称。
# 前缀 try8 是数据库名称,而非表名称 drop trigger try8.try8_trig;
MySQL8 存储触发器不支持修改,官方推荐的实现方式为先删除后重建。
MySQL8教程 - MySQL8 存储触发器,介绍 MySQL 和 MySQL8 数据库,从 MySQL8 存储触发器概念开始,逐步到 MySQL8 存储触发器示例等,通篇实用易懂,让 MySQL8 入门更加快速和简单。
《MySQL8教程》主打原创、全部免费,欢迎学习和转载,如需交流请加微信号:try8_cn。