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 触发器:在触发事件发生之后执行。
触发事件
触发器可以配置为在以下事件发生时激活:
- 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>
注意事项
- 触发器可以影响性能,因此仅在需要时再使用。
- 确保触发器不会导致无限循环或死锁。
- 对于复杂的操作,可以考虑使用存储过程代替触发器。










