mysql 中触发器使用总结

MySQL 中的触发器(Trigger)是一种特殊类型的存储过程,它会在指定的数据库表上执行指定的数据修改语句(INSERT、UPDATE 或 DELETE)时自动执行。触发器可以用于保证数据的完整性,自动生成数据,或者维护复杂的业务规则等。

创建触发器

在 MySQL 中,你可以使用 CREATE TRIGGER 语句来创建触发器。这个语句的基本语法如下:

CREATE TRIGGER trigger_name
BEFORE|AFTER INSERT|UPDATE|DELETE
ON table_name FOR EACH ROW
BEGIN
-- 触发器体
END;
  • trigger_name:触发器的名称,在数据库中必须是唯一的。
  • BEFORE|AFTER:指定触发器是在数据修改之前(BEFORE)还是之后(AFTER)触发。
  • INSERT|UPDATE|DELETE:指定触发器响应的数据修改类型。
  • table_name:触发器关联的表名。
  • FOR EACH ROW:表示触发器会对表中的每一行数据执行操作。
  • 触发器体:包含触发器被激活时要执行的 SQL 语句。

示例

假设我们有一个 employees 表,我们希望在每次向该表插入新记录时,都自动将插入的时间记录到另一个表 employee_logs 中。

首先,我们创建 employee_logs 表:

 

sql复制代码

CREATE TABLE employee_logs (
log_id INT AUTO_INCREMENT PRIMARY KEY,
employee_id INT,
action VARCHAR(50),
action_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

然后,我们创建触发器:

DELIMITER $$
CREATE TRIGGER before_employee_insert
BEFORE INSERT
ON employees FOR EACH ROW
BEGIN
INSERT INTO employee_logs(employee_id, action)
VALUES (NEW.id, 'Inserted');
END$$
DELIMITER ;

注意:

  1. 这里我们使用了 DELIMITER 来改变语句的结束符,因为在触发器体中可能会包含多个语句,而 MySQL 默认的分号(;)会结束整个 CREATE TRIGGER 语句。我们将结束符改为 $$,然后在触发器体结束后又改回 ;
  2. NEW.id 指的是即将被插入到 employees 表中的新记录的 id 字段的值。

查看触发器

你可以使用 SHOW TRIGGERS; 语句来查看数据库中的所有触发器,或者使用 SHOW CREATE TRIGGER trigger_name; 来查看特定触发器的创建语句。

删除触发器

如果你不再需要某个触发器,可以使用 DROP TRIGGER 语句来删除它:

 

DROP TRIGGER trigger_name;

触发器是 MySQL 中非常强大的功能,但也需要谨慎使用,因为它们可能会在不经意间影响数据库的性能或引入难以追踪的错误。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值