MySQL触发器(Trigger)是一种特殊的存储过程,它会在指定的事件发生时自动执行。这些事件包括INSERT、UPDATE和DELETE操作。触发器可以在这些操作之前(BEFORE)或之后(AFTER)执行,用于实现数据的自动维护和业务逻辑的自动化。
假设我们有一个表users
,我们希望在每次更新用户信息时,自动记录更新前后的信息。
-- 创建表
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(50),
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 创建触发器
DELIMITER $$
CREATE TRIGGER after_user_update
AFTER UPDATE ON users
FOR EACH ROW
BEGIN
INSERT INTO user_update_log (user_id, old_name, new_name, old_email, new_email, updated_at)
VALUES (OLD.id, OLD.name, NEW.name, OLD.email, NEW.email, NOW());
END$$
DELIMITER ;
-- 创建日志表
CREATE TABLE user_update_log (
log_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
old_name VARCHAR(50),
new_name VARCHAR(50),
old_email VARCHAR(50),
new_email VARCHAR(50),
updated_at TIMESTAMP
);
原因:
解决方法:
原因:
解决方法:
通过以上信息,您可以更好地理解MySQL触发器的概念、优势、类型和应用场景,并解决一些常见问题。
领取专属 10元无门槛券
手把手带您无忧上云