-- itcast
-- 触发器
-- 需求:通过触发器记录 stue 表的数据变更日志( user_logs),包含增加,修改,删除;
-- 准备工作:日志表
create table 日志表(
id int not null auto_increment,
operation varchar(20) not null comment '操作类型, insert/update/delete',
operate_time datetime not null comment'操作时间',
operate_id int(11) not null comment'操作的ID',
operate_params varchar(500) comment'操作参数',
primary key(`id`)
) engine=innodb default charset=utf8;
-- 插入数据触发器
create trigger 触发器
after insert on stue for each row -- 在向stue表插入数据之后,会执行插入日志表的操作
begin
insert into 日志表( id, operation, operate_time, operate_id, operate_params)VALUES
(null,'insert', now(), new. id, concat('插入的数据内容为:id=', new. id,' name=', new. name,'phone',new. phonr,'密码',new.mima,'性别',new.xb));
end;
-- 查看
show triggers ;-- 展示当前数据库中有哪些触发器,即触发时的状态
-- 删除
drop trigger 触发器;-- 删除触发器tb_user_insert_trigger
-- 插入数据stue
insert into stue (id, name, mima, phonr, xb, y_x, d_z) values (12,'肉肉女','123255','18987...','男','12863@qq','天津');
-- 修改数据的触发器
create trigger 修改数据触发器
after update on stue for each row -- 在向stue表插入数据之后,会执行插入日志表的操作-- 行级础发器(for each row)
begin
insert into 日志表( id, operation, operate_time, operate_id, operate_params)VALUES
(null,'update', now(), new. id, concat('更新之前的数据:id=', new. id,' name=', new. name,'phone',new. phonr,'密码',new.mima,'性别',new.xb,
'更新之后的数据:id=', new. id,' name=', new. name,'phone',new. phonr,'密码',new.mima,'性别',new.xb));
end;
show triggers; -- 查看触发器
update stue set name='修改成花花' where d_z='天津';
update stue set name='修改成bba' where id<5; -- for each row 因为是行触发器,所以在执行where id<5的条件时,会触发5次
-- 删除数据的触发器
create trigger 删除数据触发器
after delete on stue for each row -- 在向stue表插入数据之后,会执行插入日志表的操作-- 行级础发器(for each row)
begin
insert into 日志表( id, operation, operate_time, operate_id, operate_params)VALUES
(null,'delate', now(), old.id, concat('删除之前的数据:id=', old.id,' name=', old. name,'phone',old. phonr,'密码',old.mima,'性别',old.xb));
end;
delete from stue where d_z='天津';