目录
1.1 insert类型
1.2 update 类型
1.3 delect 类型
介绍:
触发器是与表有关的数据库对象,是指在insert/updata/delect之前或之后,触发器并执行触发器中的定义的SQL语句集合。这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。
现在触发器还只支持行级触发,不支持语句级触发。
触发器类型:
insert型触发器:new 表示将要或者已经新增的数据。
updat型触发器:old表示修改之前的数据,new表示将要或已经修改后的数据。
delect型触发器:old表示将要或者已经删除的数据。
语法:
创建:
create trigger trigger_name
before/after insert/update/delect
on tbl_name for each row --行级触发器
begin
trigger_stmt;
end;
查看:
show triggers;
删除:
drop trigger trigger_name ;
案例:通过触发器记录 tb_user 表的数据变更日志,将变更日志插入到日志表user_logs中,包含增加,修改,删除。
先提前准备一张表;
插入数据触发器
create trigger tb_user_insert_trigger
after insert on tb_user for each row
begin
insert into user_logs(id,operation,operate_time,operate_id,operate_params) VALUES
(null,'insert',now(),new.id,concat('插入的数据内容为:id=',new.id,'name=',new.name,',phone=',new.phone,',email=',new.email,',profession=',new.profeession));
end;
//查看
show triggers;
修改数据触发器
create trigger tb_user_update_t_trigger
after update on tb_user for each row
begin
insert into user_logs(id,operation,operate_time,operate_id,operate_params) VALUES
(null,'update',now(),new.id,
concat('更新之前的数据内容为:id=',old.id,'name=',old.name,',phone=',old.phone,',email=',old.email,',profession=',old.profeession)' |
concat('更新之后的数据内容为:id=',new.id,'name=',new.name,',phone=',new.phone,',email=',new.email,',profession=',new.profeession));
end;
show triggers;
update tb_user
删除数据库触发器
create trigger tb_user_update_t_trigger
after update on tb_user for each row
begin
insert into user_logs(id,operation,operate_time,operate_id,operate_params) VALUES
(null,'delete',now(),old.id,
concat('更新之前的数据内容为:id=',old.id,'name=',old.name,',phone=',old.phone,',email=',old.email,',profession=',old.profeession));
end;
show triggers;//看看几个触发器。
delcet from tb_user where id=26;//查询表中id为26的数据。