MYSQL触发器

MYSQL触发器

触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。

所有触发器都保存在information_schema.trigger表中。

创建触发器

格式:

create trigger 触发器名字

before/after

insert/update/delete/load data/replace ON 建立触发器的表

FOR EACH ROW

触发器程序体

例子

假设系统中有两个表:

班级表 class(班级号 classID, 班内学生数 stu_num)

学生表 student(学号 stuID, 所属班级号 classID)

要创建触发器来使班级表中的班内学生数随着学生的添加自动更新

DELIMITER $

create trigger tri_stu_Insert after insert

on student for each row

begin

declare c int;

set num = (select stu_num from class where classID=new.classID);

update class set stu_num = num + 1 where classID = new.classID;

end$

DELIMITER ;

new与old关键字解析

在 INSERT 型触发器中,NEW 用来表示将要(BEFORE)或已经(AFTER)插入的新数据;

在 UPDATE 型触发器中,OLD 用来表示将要或已经被修改的原数据,NEW 用来表示将要或已经修改为的新数据;

在 DELETE 型触发器中,OLD 用来表示将要或已经被删除的原数据;

show trigger [from DBname] 查看触发器

drop trigger [if exists][DBname.] trigger_name删除触发器

相关推荐