触发器是用于监视某种情况并触发某种操作,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,而是由事件来触发。例如,对某张表进行insert、delete、update操作时就会触发执行它。
#创建触发器语法
create trigger trigger_name trigger_time trigger_event on table_name for each row trigger_stmt
参数说明:
trigger_name:触发器名称
trigger_time:触发时间,取值有before、after
trigger_event:触发事件,取值有insert、update、delete
table_name:触发器监控的表名
trigger_stmt:触发执行的语句,可以使用old、new来引用变化前后的记录内容
new.columnname:获取insert触发事件中新插入的数据
old.columnname:获取update和delete触发事件中被更新、删除的数据
#用户表
create table user_info(
id int not null auto_increment primary key,
name varchar(30),
email varchar(50)
)default charset=utf8;
insert into user_info(id,name,email) values(1,'Lau','liuyouquan139866@163.com');
insert into user_info(id,name,email) values(2,'张三','zhangsan@qq.com');
#邮件表
create table email_info(
id int not null auto_increment primary key,
email varchar(50),
content text,
send_time datetime
)default charset=utf8;
#触发器实战:给新用户发邮件
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,'欢迎加入',now()); #new.email获取新插入的邮件地址
end
//
delimiter ;