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
是不是很简单呢?
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。