MySQL 触发器(Trigger)是一种特殊的存储过程,它会在指定的事件发生时自动执行。这些事件可以是 INSERT、UPDATE 或 DELETE 操作。触发器可以在这些操作之前(BEFORE)或之后(AFTER)执行。
假设我们有一个表 employees,我们希望在插入新员工时,自动记录插入的时间和操作用户的 ID。
DELIMITER $$
CREATE TRIGGER before_employee_insert
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
-- 创建变量
SET NEW.insert_time = NOW();
SET NEW.inserted_by = CURRENT_USER();
END$$
DELIMITER ;; 改为 $$,以便在触发器定义中使用 ;。before_employee_insert 的触发器。employees 表的 INSERT 操作之前执行。insert_time 字段为当前时间。inserted_by 字段为当前用户。原因:
解决方法:
-- 检查触发器是否存在
SHOW TRIGGERS LIKE 'before_employee_insert';
-- 删除已存在的触发器(如果存在)
DROP TRIGGER IF EXISTS before_employee_insert;
-- 重新创建触发器
DELIMITER $$
CREATE TRIGGER before_employee_insert
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
SET NEW.insert_time = NOW();
SET NEW.inserted_by = CURRENT_USER();
END$$
DELIMITER ;没有搜到相关的文章