首页 > 技术文章 > MySQL之触发器

plf-Jack 2019-07-16 14:54 原文

二:触发器

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 触发器名称

推荐阅读