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









