假定有个需求,对于stu表,当每次对stu表进行操作时,都要将相关操作保存到历史表stu_history中。
1、创建stu、stu_history表
create table stu1 (id int primary key, name varchar(100),age int,sex varchar(2)); create table stu_history(id int, name varchar(100),age int,sex varchar(2),status varchar(10),modify_date datetime);2、创建触发器 触发器的触发条件分为6种,before insert,after insert,before update,after update,before delete,after delete。 本次我们的需求是要让对表的操作保存历史,所以选用的是after insert,after update,after delete这三种。
新增后触发器 delimiter // create trigger tr_stu_1 after insert on stu for each row begin insert into stu_history values(new.id,new.name,new.age,new.sex,'新增',sysdate()); end // delimiter ; 修改后触发器 delimiter // create trigger tr_stu_2 after update on stu for each row begin insert into stu_history values(new.id,new.name,new.age,new.sex,'更新',sysdate()); end // delimiter ; 删除后触发器 delimiter // create trigger tr_stu_3 after delete on stu for each row begin insert into stu_history values(old.id,old.name,old.age,old.sex,'删除',sysdate()); end // delimiter ;3、当对stu表进行新增、修改、删除操作:
insert into stu values(1,'annie',18,'女'),(3,'xiaoming',21,'男'); update stu set age=19 where id=1; delete from stu where id=3;4、查看stu_history历史表中的内容: