MySQL触发器示例(8)

时间:2021-01-03 10:58:55

 

什么是触发器

需求:出于审计目的,当有人往表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 ;