Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql触发器中监控字段改变

mysql触发器中监控字段的改变方式

作者:某科学的南条

这篇文章主要介绍了mysql触发器中监控字段的改变方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mysql触发器中监控字段的改变

mysql的触发器分为多种,INSERT或UPDATE或DELETE触发器

比如使用UPDATE触发器的时候,是整条数据改变后就会触发

那么检测单个字段的改变,

可以有如下写法:

if NEW.nor_price <> OLD.nor_price then
     update `dst_111yao_doms`.`d_price_upt` set price = NEW.nor_price , `status` = '0' , createtime = now() 
     where olshopid = NEW.olshopid and tfid = NEW.pfid and warecode = NEW.outter_id and skuid = NEW.sku;
end if;

当一条数据触发了触发器后,判定NEW字段和OLD字段是否相等,如果不相等,那么就监控到了该字段的改变

mysql触发器怎么写?

一个项目涉及到MySQL触发器的应用 以前没怎么接触过 就百度了一下 结果吧 考下来基本用不了 看来还是得自己动手 

我们不去看别的 看我的就行 这个方法比较简单 直接phpmyadmin里点击触发器 然后填上该填的

比如你监控a表的b字段那么选择的表就是a,然后想控制a表b字段有更新的时候 把传入更新的值乘以7保存到表里 就是你原本是程序传给B的值是1 想实现存表中的值是它的7倍 我们看看代码应该怎么写

after和before怎么选?涉及到值修改的都是before after只能取值 不能修改

代码:

begin
set new.b=new.b * 7;
//这里还可以写SQL语句 需要注意的是当前表请使用上方set语句无需使用SQL语句,非当前表使用SQL语句 new.*代表当前准备写入的值 old.*代表该字段的原有值
end

是不是很简单呢?

总结 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文