mysql 触发器的编写_MySql编写触发器的若干示例

在使用mysql的过程中,我们希望对某些敏感数据加上触发器来生成日志,用来监控核心数据的变更情况。那么Mysql的触发器如何编写呢?

示例1:

create trigger set_status after insert on bookborrowinfo

for each row BEGIN

set @bookid=new.bookid;

set @outnum=(select outnum from bookstatus where bookid=@bookid);

set @booknum=(select booknum from book where id=@bookid);

if @outnum is null then

insert into bookstatus(bookid,outnum,status) values(@bookid,1,1);

else

update bookstatus set outnum=@outnum+1 where bookid=@bookid;

end if;

set @outnum=@outnum+1;

if @outnum>=@booknum then

update bookstatus set status=0 where bookid=@bookid;

end if;

END;

示例2:

create trigger set_returnstatus after delete on bookborrowinfo

for each row BEGIN

set @bookid=old.bookid;

set @outnum=(select outnum from bookstatus where bookid=@bookid);

update bookstatus set outnum=@outnum-1,status=1 where bookid=@bookid;

END;

示例3:

create trigger set_status after insert on bookborrowinfo

for each row BEGIN

declare booknum_0 int;

declare bookid_0 int;

set bookid_0=new.bookid;

set @outnum=(select outnum from bookstatus where bookid=bookid_0);

set booknum_0=(select booknum from book where id=bookid_0);

if @outnum_0<=0 then

insert into bookstatus(bookid,outnum,status) values(bookid_0,1,1);

else

update bookstatus set outnum=outnum+1 where bookid=bookid_0;

end if;

END;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值