首頁  >  文章  >  資料庫  >  【MySQL 14】觸發器after和before

【MySQL 14】觸發器after和before

黄舟
黄舟原創
2017-02-04 13:49:211422瀏覽

after是先完成資料的增刪改,再觸發,觸發的語句晚於監視的增刪改操作,無法影響前面的增刪改動作;也就是說先插入訂單記錄,再更新商品的數量;

before是先完成觸發,再增刪改,觸發的語句先於監視的增刪改,我們就有機會判斷,修改即將發生的操作;

案例: 
商品g 表中juzi 的數量只有20個,但是如果在訂單o中加入超過20了,此時如何解決呢

#创建触发器test4  
CREATE TRIGGER test4  
AFTER  
INSERT  
ON `ord`  
FOR EACH ROW  
BEGIN  
UPDATE goods SET num= num - new.much WHERE goods_id = new.gid;  
END$$

【MySQL 14】觸發器after和before

觸發器使用before:

先觸發,在判斷處理之後再進行增刪改不會,根據庫存修改了訂單的最大數量。當然我這只是簡單的固定了一個值,其實可以用語句取得到動態的庫存值。

#创建触发器test5  
CREATE TRIGGER test5  
BEFORE  
INSERT  
ON `ord`  
FOR EACH ROW  
BEGIN  
  IF new.much >26 THEN  
     SET new.much = 26;  
  END IF;  
UPDATE goods SET num= num - new.much WHERE goods_id = new.gid;  
END$$

【MySQL 14】觸發器after和before

以上就是 【MySQL 14】觸發器after和before的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn