MySQL触发器示例(8)
什么是触发器
需求:出于审计目的,当有人往表users插入一条记录时,把插入的uid,uname,插入动作和操作时间记录下来。
Delimiter $$ CREATE trigger tr_users_insert after insert on users for each row begin insert into oplog(uid,uname,action,optime) values(NEW.uid,NEW.uname,'insert',now()); End; $$ Delimiter ;
1.创建触发器使用create trigger 触发器名
2.什么时候触发?After insert on users,除了after还有before,是在对表操作之前(before)或者之后(after)触发动作的。
3.对什么操作事件触发?after insert on users ,操作事件包括insert,update,delete
4.对什么表触发?after insert on users
5.影响的范围?For each row
触发器:与函数、存储过程一样,触发器是一种对象,它能根据对表的操作事件,触发一些动作,这些动作可以是insert,update,delete等修改操作。
生产环境触发器实例
需求:出于 审计目的,当删除users表时,记录删除前该记录的主要字段值
Delimiter $$ CREATE trigger tr_users_delete before delete on users for each row begin insert into oplog(uid,uname,action,optime,old_value,new_value) values(OLD.uid,OLD.uname,'delete',now(),OLD.regtime,OLD.regtime); End; $$ Delimiter ;