MySQL触发器调用过程

2023年 8月 6日 22.8k 0

MySQL触发器是一种特殊的存储过程,它可以在指定的事件发生时自动执行,比如插入、更新或删除操作。当这些事件发生时,MySQL将自动调用触发器。

CREATE TRIGGER trigger_name trigger_time trigger_event
ON table_name FOR EACH ROW trigger_body

MySQL触发器调用过程

创建触发器时需要指定触发器的名称、触发时间、触发事件以及触发器体。其中,触发时间有BEFORE和AFTER两种,触发事件包括INSERT、UPDATE和DELETE三种。

-- 在插入记录前执行计算
CREATE TRIGGER calc_salary BEFORE INSERT ON employee_info
FOR EACH ROW BEGIN
SET NEW.salary = NEW.base_salary + NEW.bonus;
END;

以上是一个触发器示例,当向employee_info表插入记录时,触发器将自动计算新员工的薪水并更新到salary字段中。

在触发器的执行过程中,可以使用NEW和OLD引用新旧记录,以及引用其他表和变量。

-- 在更新记录前判断是否加薪
CREATE TRIGGER check_raise BEFORE UPDATE ON employee_info
FOR EACH ROW BEGIN
DECLARE raise_rate FLOAT(3,2);
SELECT salary/bonus INTO raise_rate FROM salary_info WHERE employee_id = NEW.id;
IF NEW.salary/OLD.salary >raise_rate THEN
SET NEW.salary = OLD.salary * (1 + raise_rate);
END IF;
END;

以上是另一个触发器示例,当employee_info表中的记录更新时,触发器将自动从salary_info表读取当前员工的加薪比例,以及比较当前薪水是否符合加薪标准,如符合则自动将薪水加薪。

总的来说,MySQL触发器可以自动化执行一些常规的操作,极大地简化了开发人员的工作。但要注意避免触发器嵌套过深,影响数据库性能。

相关文章

pt-kill工具的使用
pt-ioprofile工具包的使用
数据库管理-第216期 Oracle的高可用-01(20240703)
DBMS_REPAIR EXAMPLE SCRIPT WITH PARTITION
数据库事务的四大特性: ACID 
使用BBED修复损坏的SYSTEM文件头

发布评论