MySQL 触发器允许在 INSERT、UPDATE 和 DELETE 操作时自动执行 SQL 语句。要创建触发器,请使用语法:CREATE TRIGGER [触发器名称] BEFORE | AFTER [INSERT | UPDATE | DELETE] ON [表名] FOR EACH ROW [触发器体]。触发器类型有 BEFORE(事件前执行)和 AFTER(事件后执行),事件有 INSERT、UPDATE 和 DELETE。FOR EACH ROW 指定触发器将在表中的每一行上执行。示

MySQL 触发器的使用教程
触发器是数据库中用于在特定事件发生时自动执行一组 SQL 语句的机制。MySQL 触发器提供了在 INSERT、UPDATE 和 DELETE 操作期间执行自定义操作的强大功能。
如何创建触发器
要创建触发器,请使用以下语法:
CREATE TRIGGER [触发器名称] BEFORE | AFTER [INSERT | UPDATE | DELETE] ON [表名] FOR EACH ROW [触发器体]
触发器体
触发器体包含在触发器激活时执行的 SQL 语句。它可以包含任何有效的 SQL 语句,例如:
- 插入或更新其他表中的数据
- 发送电子邮件或短信通知
- 记录日志信息
触发器类型
BEFORE 触发器:在触发事件发生之前执行。
AFTER 触发器:在触发事件发生之后执行。
触发事件
SmartB2B 是一款基于PHP、MySQL、Smarty的B2B行业电子商务网站管理系统,系统提供了供求模型、企业模型、产品模型、人才招聘模型、资讯模型等模块,适用于想在行业里取得领先地位的企业快速假设B2B网站,可以运行于Linux与Windows等多重服务器环境,安装方便,使用灵活。 系统使用当前流行的PHP语言开发,以MySQL为数据库,采用B/S架构,MVC模式开发。融入了模型化、模板
触发器可以配置为在以下事件发生时激活:
- INSERT:在插入新行时激活。
- UPDATE:在更新现有行时激活。
- DELETE:在删除行时激活。
FOR EACH ROW 子句
该子句指定触发器将在表中的每一行上执行,而不是只执行一次。
示例
以下触发器会在 orders 表中插入新订单时向客户发送电子邮件:
CREATE TRIGGER email_new_order AFTER INSERT ON orders FOR EACH ROW BEGIN -- 从触发的行中获取客户的电子邮件地址 SET @customer_email = NEW.customer_email; -- 发送电子邮件 SEND EMAIL TO @customer_email WITH SUBJECT 'New Order Confirmation' AND BODY 'Your order has been received and is being processed.'; END
删除触发器
要删除触发器,请使用以下语法:
DROP TRIGGER [触发器名称]
注意事项
- 触发器可以影响性能,因此仅在需要时再使用。
- 确保触发器不会导致无限循环或死锁。
- 对于复杂的操作,可以考虑使用存储过程代替触发器。









