一、概念
当一件事发生的时候,会引发其他相关的事件发生
在数据库中,主要当一个预定义的事件发生的时候,就会被mysql自动调用
触发器非常的消耗资源,因为是针对每一行的数据,所以对于增删改查比较频繁的表不要使用触发器
二、语法
create trigger 触发器名称 {before|after}{insert|update|delete} on 表名 (发生什么事件之前还是之后触发)
for each row
begin
触发器执行的语句块
end
三、示例
1、当表里面新增一个用户的时候,显示新增用户成功
delimiter //
create trigger tri_ins_card after insert on card
for each row
begin
select '新增用户成功' into @result; #将新增用户成功赋值给变量result
end//
查询触发器是否成功触发:
select @result;
2、创建一个触发器,当借阅表新插入一条记录,图书表相关书籍的库存数量减少1本(两张表的出发内容)
delimiter //
create trigger tri_ins_info after insert on info
for each row
begin
select new.bno into @benovalue; (new.bno 是固定用法,拿到某个字段最新的数据)
update books set kucun=kuncun-1 where bno=@bnovalue;
end//
3、
查看触发器 :
show triggers;
删除触发器:
drop trigger tri_ins_info;
or
drop trigger if exists tri_ins_info