【MySQL 14】觸發器after和before

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)!

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享