触发器是与表有关的数据库对象,指再insert/update/delete之前或之后,触发并执行触发器中定义的SQL语句集合,触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。
使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的,现在触发器只支持行级触发,不支持语句级触发。
触发器类型 | NEW和OLD |
insert型触发器 | NEW表示将要或者已经新增的数据 |
update型触发器 | OLD表示修改之前的数据,NEW表示将要或已经修改后的数据 |
delete型触发器 | OLD表示将要或者已经删除的数据 |
一、语法
1、创建
create trigger trigger_name(触发器名)
before/after insert/update/delete
on 表名 for each row
begin
trigger_stmt;
end;
2、查看
show trigger;
3、删除
drop trigger [数据库名]触发器名;如果没有指定数据库名,默认为当前数据库
二、案例:
1、insert
创建
create trigger tb_user_insert_trigger
after insert on tb_user for each row
begin
insert into user_logs(id) values (1);
end;
查看
show trigger;
删除
drop trigger tb_user_insert_trigger;
2、update
创建
create trigger tb_user_update_trigger
after update on tb_user for each row
begin
insert into user_logs(id,params) values (1,concat('更新前的id:',old.id,
'更新后的id:',new.id));
end;