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