一、概述
触发器是在SQL执行了insert/update/delete操作前/后,执行事先定义好的SQL语句,在Mysql中,触发器只能做到行级触发,也就是如果一条语句修改了10行,那么触发器就会触发10次。
二、语法
创建:
create trigger 触发器名 after/before insert/update/delete on 表名 for each row
begin
-- SQL逻辑
end;
展示当前所有的触发器:
show triggers ;
删除:
drop trigger 触发器名字;
在定义触发器中的SQL逻辑时,old表示操作前的数据,new表示操作之后的数据。
例如:
创建一个日志表:
create table user_log(
id int primary key auto_increment,
opr varchar(10),
user_name varchar(15),
opr_time time
);
定义触发器:
create trigger user_insert_trigger after insert on user_info for each row
begin
insert into user_log values (null,'insert',new.user_name,now());
end;
执行语句:
insert into user_info (id, user_name, password) values (null,'wangwu',123456);
user_log表中自动增加数据: