面试题答案
一键面试MySQL触发器概念
MySQL触发器是一种与表操作相关的数据库对象,它在特定的数据库事件(如INSERT、UPDATE、DELETE操作)发生时自动触发执行。触发器可以在事件发生之前(BEFORE)或之后(AFTER)执行一系列SQL语句,用于实现复杂的业务逻辑、数据验证、审计等功能。
创建示例
假设我们有两个表,users
表用于存储用户信息,user_count
表用于记录用户数量,结构如下:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL
);
CREATE TABLE user_count (
count INT NOT NULL
);
-- 初始化user_count表
INSERT INTO user_count (count) VALUES (0);
创建在插入新数据到users
表时更新user_count
表中用户数量的触发器:
DELIMITER //
CREATE TRIGGER after_user_insert
AFTER INSERT ON users
FOR EACH ROW
BEGIN
UPDATE user_count
SET count = count + 1;
END //
DELIMITER ;
上述代码中,使用CREATE TRIGGER
语句创建了名为after_user_insert
的触发器。该触发器在users
表执行INSERT
操作之后触发(AFTER INSERT
),对于每一条插入的新记录(FOR EACH ROW
),执行UPDATE
语句将user_count
表中的count
字段值加1 。DELIMITER
语句用于临时改变语句结束符,避免触发器内部SQL语句中的分号与CREATE TRIGGER
语句的结束符冲突。