mysql觸發(fā)器中監(jiān)控字段的改變方式
mysql觸發(fā)器中監(jiān)控字段的改變
mysql的觸發(fā)器分為多種,INSERT或UPDATE或DELETE觸發(fā)器
比如使用UPDATE觸發(fā)器的時候,是整條數(shù)據(jù)改變后就會觸發(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ù)據(jù)觸發(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
是不是很簡單呢?
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Mysql5.7中使用group concat函數(shù)數(shù)據(jù)被截斷的問題完美解決方法
前幾天在項目中遇到一個問題,使用 GROUP_CONCAT 函數(shù)select出來的數(shù)據(jù)被截斷了,最長長度不超過1024字節(jié),開始還以為是navicat客戶端自身對字段長度做了限制的問題。后來查找出原因,解決方法大家跟隨腳本之家小編一起看看吧2018-03-03
解決MySql版本問題sql_mode=only_full_group_by
這篇文章主要介紹了解決MySql版本問題sql_mode=only_full_group_by,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11
MYSQL使用.frm恢復數(shù)據(jù)表結構的實現(xiàn)方法
在這里我們探討使用.frm文件恢復數(shù)據(jù)表機構(當然如果你以前備份過數(shù)據(jù)表,你可以使用調用備份的數(shù)據(jù)表)2010-02-02

