通过触发器记录 tb_user 表的数据变更日志,将变更日志插入到日志表user_logs中,包含增加, 修改 , 删除 ;
表结构准备:
-- 准备工作 : 日志表 user_logs
create table user_logs(
id int(11) 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 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.profession));
end;
测试:
-- 查看
show triggers;
-- 插入数据到tb_user
insert into tb_user(id, name, phone, email, profession, age, gender, status, createtime) VALUES (26,'三皇子','18809091212','erhuangzi@163.com','软件工程',23,'1','1',now());
测试完毕之后,检查日志表中的数据是否可以正常插入,以及插入数据的正确性。