MySQL触发器是一种特殊的存储过程,它会在指定的事件(如INSERT、UPDATE或DELETE)发生时自动执行。触发器可以用于在数据修改前后执行一些额外的操作,例如日志记录、数据验证或数据同步。
CREATE TRIGGER trigger_name
trigger_time trigger_event
ON table_name FOR EACH ROW
BEGIN
-- 触发器执行的SQL语句
END;
trigger_name
:触发器的名称。trigger_time
:触发器执行的时间,可以是BEFORE或AFTER。trigger_event
:触发器响应的事件,可以是INSERT、UPDATE或DELETE。table_name
:触发器作用的表名。FOR EACH ROW
:表示对每一行数据都执行触发器。假设我们有一个名为employees
的表,结构如下:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
我们希望在每次更新员工薪水时,自动记录修改前后的薪水到另一个表salary_history
中。
首先创建salary_history
表:
CREATE TABLE salary_history (
employee_id INT,
old_salary DECIMAL(10, 2),
new_salary DECIMAL(10, 2),
change_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
然后创建触发器:
DELIMITER $$
CREATE TRIGGER after_salary_update
AFTER UPDATE ON employees FOR EACH ROW
BEGIN
INSERT INTO salary_history (employee_id, old_salary, new_salary)
VALUES (OLD.id, OLD.salary, NEW.salary);
END$$
DELIMITER ;
原因:
解决方法:
原因:
解决方法:
通过以上内容,你应该对MySQL触发器的创建和使用有了全面的了解。如果有更多具体问题,可以进一步提问。
领取专属 10元无门槛券
手把手带您无忧上云