MST

星途 面试题库

面试题:MySQL触发器的基本概念与简单应用

请简述MySQL触发器的概念,并举例说明如何创建一个在插入新数据到`users`表时,同时更新`user_count`表中用户数量的触发器。
19.7万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

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语句的结束符冲突。