16.触发器
原创
©著作权归作者所有:来自51CTO博客作者wx63560c7d74933的原创作品,请联系作者获取转载授权,否则将追究法律责任
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 ;