MySQL之触发器
二:触发器
1. 什么是触发器
触发器,是一段与某个表相关的sql语句,会在某个时间点,满足某个条件后自动触发执行
其中两个关键因素:
时间点
* 事件发生前,before|事件发生后 after事件
* update delete insert在触发器包含两个对象:
old:update,delete中可用
new:update,insert 中可用
2. 什么时候使用触发器
场景1:当表的数据被修改时,自动记录一些数据,执行一些sql语句
3. 创建触发器
# 语法 CREATE TRIGGER t_name t_time t_event ON table_name FOR EACH ROW begin stmts.....(一堆sql语句) end # 需求:有cmd表和错误日志表,在cmd执行失败时自动将信息存储到错误日志表中 # 当插入cmd表的时候,如果执行状态时,失败的,那么将信息插入到errlog中 #准备数据 CREATE TABLE cmd ( id INT PRIMARY KEY auto_increment, USER CHAR (32), priv CHAR (10), cmd CHAR (64), sub_time datetime, #提交时间 success enum ('yes', 'no') #0代表执行失败 ); #错误日志表 CREATE TABLE errlog ( id INT PRIMARY KEY auto_increment, err_cmd CHAR (64), err_time datetime ); after insert之后? delimiter // create trigger cmd_insert after insert on cmd for each row begin if new.success = "no" then insert into errlog values(null,new.cmd,new.sub_time); end if; end // delimiter;
4. 删除触发器
drop trigger cmd_insert;
5. 查看触发器
show triggers; show create trigger 触发器名称