mysql觸發(fā)器中監(jiān)控字段的改變方式
mysql觸發(fā)器中監(jiān)控字段的改變
mysql的觸發(fā)器分為多種,INSERT或UPDATE或DELETE觸發(fā)器
比如使用UPDATE觸發(fā)器的時候,是整條數(shù)據改變后就會觸發(fā)
那么檢測單個字段的改變,
可以有如下寫法:
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;
當一條數(shù)據觸發(fā)了觸發(fā)器后,判定NEW字段和OLD字段是否相等,如果不相等,那么就監(jiān)控到了該字段的改變
mysql觸發(fā)器怎么寫?
一個項目涉及到MySQL觸發(fā)器的應用 以前沒怎么接觸過 就百度了一下 結果吧 考下來基本用不了 看來還是得自己動手
我們不去看別的 看我的就行 這個方法比較簡單 直接phpmyadmin里點擊觸發(fā)器 然后填上該填的
比如你監(jiān)控a表的b字段那么選擇的表就是a,然后想控制a表b字段有更新的時候 把傳入更新的值乘以7保存到表里 就是你原本是程序傳給B的值是1 想實現(xiàn)存表中的值是它的7倍 我們看看代碼應該怎么寫
after和before怎么選?涉及到值修改的都是before after只能取值 不能修改
代碼:
begin set new.b=new.b * 7; //這里還可以寫SQL語句 需要注意的是當前表請使用上方set語句無需使用SQL語句,非當前表使用SQL語句 new.*代表當前準備寫入的值 old.*代表該字段的原有值 end
是不是很簡單呢?
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決Linux安裝mysql 在/etc下沒有my.cnf的問題
這篇文章主要介紹了解決Linux安裝mysql 在/etc下沒有my.cnf的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
解決MySQL8.0 輸入無誤仍然提示Access denied問題
這篇文章主要介紹了解決MySQL8.0 輸入無誤仍然提示Access denied問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05

