触发器(Trigger)是一种特殊的数据库对象,它会在特定事件发生时自动执行。常见的触发时机包括插入、更新和删除数据。
创建触发器通常使用 CREATE TRIGGER。
基本语法如下:
CREATE TRIGGER 触发器名
BEFORE|AFTER INSERT|UPDATE|DELETE
ON 表名
FOR EACH ROW
BEGIN
SQL语句;
END;例如:
DELIMITER //
CREATE TRIGGER set_userdate
BEFORE INSERT ON user_accounts
FOR EACH ROW
BEGIN
SET NEW.status = 1;
END //
DELIMITER ;这表示在向 user_accounts 插入数据之前,自动把新记录的 status 设为 1。
可以使用下面的语句查看当前数据库中的触发器:
SHOW TRIGGERS;它会显示:
- 触发器名称
- 事件类型
- 触发时机
- 所属表
- 定义语句等信息
如果需要更详细的信息,也可以查询 information_schema.TRIGGERS。
删除触发器使用 DROP TRIGGER:
DROP TRIGGER 触发器名;例如:
DROP TRIGGER set_userdate;为了避免对象不存在时报错,也可以使用:
DROP TRIGGER IF EXISTS set_userdate;触发器适合在特定数据变更时自动执行一些附加逻辑,例如默认赋值、日志记录、联动更新等。但由于它是隐式触发的,使用时应保持逻辑清晰,避免过度复杂。