简单点来说触发器就是一个特殊的存储过程,不过存储过程需要手动调用,而触发器自动调用。
一张图来简单说明触发器:
触发器:触发器是数据库中针对数据库表操作触发的一种特殊的存储过程。
delimiter $$
create trigger 数据库名.触发器名
before/after -- 触发器执行的顺序
insert/update/delete -- 触发事件
on 数据库名.表名 -- 事件表
for each row
begin
触发器内容 -- 事件触发后要写的语句
end $$
delimiter ;
说明:
触发器触发时间分为before和after两种
主要针对表的增删改操作,可单独指定,也可全部指定。
eg:
delimiter $$
create trigger trig_delstu_delsc
before delete on student for each row
begin
-- old 已经存在于数据库中的数据
-- new 还不存在于数据库中的数据
delete from sc where sid = old.sid;
end $$
delimiter ;
SELECT * FROM information_schema.`TRIGGERS`
WHERE trigger_schema = ‘库名'
DROP TRIGGER 触发器名
利用触发器映射部门表中每个部门的总人数和平均工资,步骤:
? 1、创建部门表,包含字段部门编号,部门名称,部门人数和平均工资;
? 2、创建触发器;
? 3、分别执行DML语句验证。
利用触发器记录删除的数据,并保存在删除表中,步骤:
? 1、创建删除记录表;
? 2、创建触发器;
? 3、执行DELETE语句验证。