触发器
一、概述
-
定义
触发器:是由事件来触发某个操作,这些事件包括INSERT、UPDATE、DELECT事件。
事件:是指用户的动作或触发某项行为
触发程序:当数据库执行这些语句时,相当于事件发生了,就会自动激发触发器执行相应的操作。
-
使用情形
当对数据表的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器实现
二、创建触发器
-
语法结构
CREATE TRIGGER 触发器名称 BEFORE/AFTER INSERT/UPDATE/DELETE ON 数据表名 FOR EACH ROW 触发器执行的语句块;
-
说明
数据表名:触发器监视的对象
DEFORE/AFTER:表示触发的时间。
INSERT/UPDATE/DELETE:表示触发的事件
触发器执行语句:可以是单条,也可以是BEGIN … END的复合语句块
-
举例
DELIMITER // CREATE TRIGGER salary_check_trigger BEFORE INSERT ON employees FOR EACH ROW BEGIN DECLEAR mgrsalary DOUBLE; SELECT salary INTO mgrsalary FROM employees # NEW:是针对新添加的操作 WHERE employee_id = NEW.manager_id; IF NEW.salary > mgrsalary THEN SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEST = '薪资高于领导薪资错误'; END IF; END // DELIMITER ;
三、查看、删除触发器
-
查看当前数据库的所有触发器的定义
SHOW TRIGGERS;
-
查看当前数据库中某个触发器的定义
SHOW CREATE TRIGGER 触发器名;
-
从系统库information_schema的TRIGGERS表中查询
SELECT * FROM information_schema.TRIGGERS;