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