MySQL 触发器时间点
MySQL触发器(Trigger)是一种特殊的存储过程,它在特定事件(如插入、更新或删除)发生时自动执行。触发器的时间点决定了它在事件发生之前(BEFORE)还是之后(AFTER)执行。理解触发器的时间点是掌握触发器的关键之一。
触发器的时间点简介
触发器的时间点分为两种:
- BEFORE:在事件发生之前执行触发器。
- AFTER:在事件发生之后执行触发器。
这两种时间点决定了触发器在数据操作过程中的执行顺序。例如,BEFORE INSERT
触发器会在插入数据之前执行,而AFTER UPDATE
触发器会在更新数据之后执行。
触发器时间点的语法
触发器的基本语法如下:
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name
FOR EACH ROW
BEGIN
-- 触发器逻辑
END;
trigger_name
:触发器的名称。BEFORE
或AFTER
:触发器的时间点。INSERT
、UPDATE
或DELETE
:触发器关联的事件。table_name
:触发器关联的表。FOR EACH ROW
:表示触发器对每一行数据都会执行。
触发器时间点的实际应用
案例1:BEFORE INSERT 触发器
假设我们有一个用户表 users
,希望在插入新用户之前自动将用户名转换为大写。我们可以使用 BEFORE INSERT
触发器来实现:
CREATE TRIGGER before_insert_user
BEFORE INSERT
ON users
FOR EACH ROW
BEGIN
SET NEW.username = UPPER(NEW.username);
END;
输入:
INSERT INTO users (username, email) VALUES ('john_doe', '[email protected]');
输出:
SELECT * FROM users;
-- 结果:username 为 'JOHN_DOE'
在这个例子中,触发器在插入数据之前将用户名转换为大写。