1.简介
触发器(trigger)用于监视某种情况并触发某种操作,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,而是由事件来触发。例如,当对某张表进行insert、delete、update操作时就会触发执行它。

2.语法

create trigger triggerName triggerTime triggerEvent 
on tableName for each row
  • triggerName:触发器名称
  • triggerTime:触发时间,取值有before、after
  • triggerEvent:触发事件,取值有insert、update、delete
  • tableName:触发器监控的表名
  • triggerStmt:触发执行的语句,可以使用old、new来引用变化前后的记录内容
  • new.columnName:获取insert触发事件中新插入的数据
  • old.columnName:获取update和delete触发事件中被更新、删除的数据

3.触发器实战:给新用户发邮件

create table user_info(
id int not null auto_increment primary key,
name varchar(30),
email varchar(50)
);

insert into user_info(id, name, email) values(1, '柳峰', 'liufeng@qq.com');
insert into user_info(id, name, email) values(2, '林涛','lintao@qq.com');

create table email_info(
id int not null auto_increment primary key,
email varchar(50),
content text,
send_time datetime
);

当有新用户插入时,自动给用户发送邮件。

delimiter //
create trigger send_email_trigger after insert on user_info for each row begin
insert into email_info(email, content, send_time) values(new.email, '欢迎加入MySQL阵营! ', now());
end
//
delimiter ;