MySQL触发器(Trigger)是一种特殊的存储过程,它会在指定的事件发生时自动执行。这些事件包括INSERT、UPDATE或DELETE等操作。触发器可以在同一个数据库中的不同表之间同步数据,实现数据的自动更新和维护。
MySQL触发器主要有以下几种类型:
触发器常用于以下场景:
假设我们有两个表:users
和user_logs
。每当users
表中的数据发生变化时,我们希望自动在user_logs
表中记录这些变化。
-- 创建users表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
email VARCHAR(50)
);
-- 创建user_logs表
CREATE TABLE user_logs (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
action VARCHAR(10),
change_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 创建AFTER INSERT触发器
DELIMITER //
CREATE TRIGGER after_user_insert
AFTER INSERT ON users
FOR EACH ROW
BEGIN
INSERT INTO user_logs (user_id, action) VALUES (NEW.id, 'INSERT');
END;
//
DELIMITER ;
-- 创建AFTER UPDATE触发器
DELIMITER //
CREATE TRIGGER after_user_update
AFTER UPDATE ON users
FOR EACH ROW
BEGIN
INSERT INTO user_logs (user_id, action) VALUES (NEW.id, 'UPDATE');
END;
//
DELIMITER ;
-- 创建AFTER DELETE触发器
DELIMITER //
CREATE TRIGGER after_user_delete
AFTER DELETE ON users
FOR EACH ROW
BEGIN
INSERT INTO user_logs (user_id, action) VALUES (OLD.id, 'DELETE');
END;
//
DELIMITER ;
通过以上内容,你应该对MySQL触发器在数据库同步数据方面的应用有了全面的了解。如果还有其他问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云