mysql 触发器里记录用户_MYSQL触发器记录用户操作的命令

创建用户:

grant  all   on  *.*   to   ma1@'%'  identified  by   'ma1'  with  grant   option;

grant  all   on  *.*   to   ma2@'%'  identified  by   'ma2'  with  grant   option;

grant  all   on  *.*   to   ma3@'%'  identified  by   'ma3'  with  grant   option;

flush  privileges;

select  user,host,password   from   mysql.user;

创建与atb表结构相同的5张表:

use  test

create  table   btb(id  int,name  varchar(50));

create table btb_trace(name varchar(50),time varchar(50),act  varchar(20),id  varchar(20),sname  varchar(50));

create  table  btb_bak(user  varchar(100),id  int,name   varchar(50),del_time  varchar(50));

create  table  btb_del(user  varchar(100),id  int,name   varchar(50),del_time  varchar(50));

create  table  btb_update(user  varchar(100),id  int,name   varchar(50),del_time  varchar(50));

insert into btb_trace (name,time,act,id,sname) values(user(),now(),'insert',0,  'root');

select  *   from   btb_trace;

删除旧触发器:

show    triggers \G

drop   trigger    insert_btb;

drop   trigger    delete_btb;

drop   trigger    update_btb;

触发器1(insert触发事件):

\d  $$

create  trigger insert_btb after  insert on  btb

for  each row

begin

insert  into btb_trace (name,time,act,id,sname) values(user(),now(),'insert',new.id,new.name);

insert  into    btb_bak  values(user(),new.id,new.name,now());

end

$$

\d  ;

触发器2(delete触发事件):

\d  $$

create  trigger delete_btb  before  delete on   btb

for  each row

begin

insert  into btb_trace (name,time,act,id,sname) values(user(),now(),'delete',old.id,old.name);

insert  into btb_del values(user(),old.id,old.name,now());

end

$$

\d  ;

触发器3(update触发事件):

\d  $$

create  trigger update_btb after  update on  btb

for  each row

begin

insert  into btb_trace(name,time,act,id,sname) values

(user(),now(),'update',concat(old.id,'->',new.id),concat(old.name,'->',new.name));

insert  into btb_update values(user(),new.id,new.name,now());

end

$$

\d  ;

登录并测试:mysql   -uma1  -pma1    -h192.168.50.10

use   test;

insert  into   btb values(1,'tom');

insert  into   btb values(2,'jack');

insert  into   btb values(3,'lucy');

update  btb   set  id=10  where   id=1;

delete  from  btb   where  id=3;

select  *   from  btb_trace;

select  *   from  btb_bak;

select  *   from  btb_update;

select  *   from  btb_del;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值