MySQL触发器
一、概述
什么是触发器:
就是当一样事务发生改变时,另一样事务也随着发生改变
MySQL场景:
当MySQL一张表发生改变,另一张表也随着发生改变
语法结构:
create trigger trigger_name after|before update|delete|insert on table_name
for each row
begin
sql 语句;
end
二、实例
当bb表数据发生改变,aa表数据也随着改变
delimiter //
create trigger ab before update on bb
for each row
begin
update aa set name = 'GeekRose' where id = old.id ;
end;
//
delimiter ;
解释含义:
- delimiter //:将结束符号; 修改为 // 用于转义
就是当bb 表发生修改操作 将aa 表中id相同与bb表的记录 将名称修改为 GeekRose
注意:
这里用了关键字 old
- old:用于表示修改表之前的记录
- new:用于表示修改表之后的记录
先查询数据
执行update:
查看aa bb 表数据变化
三、条件触发
需求:
- 设计两种表 student 学生表 grade 成绩表
- 当学生表 分数大于60 成绩表对应记录修改为合格 pass
- 当学生表 分数小于60 成绩表对应记录修改为合格 fail
student表
- id int
- score int
grade表
- id int
- stage enum('pass','fail')
触发器
delimiter //
create trigger stu_gra after update on student
for each ROW
begin
if new.score >= 60 then update grade set stage = 'pass' where id = new.id;
ELSEIF new.score < 60 then update grade set stage = 'fail' where id = new.id;
end if;
end;
//
学生表录入三条记录:
成绩表录入三条记录:
当我们修改id = 1 的分数为99后:
update student set score = 99 where id = 1;
学生表中数据:
成绩表中数据: