触发器(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;
触发器适合在特定数据变更时自动执行一些附加逻辑,例如默认赋值、日志记录、联动更新等。但由于它是隐式触发的,使用时应保持逻辑清晰,避免过度复杂。