after:是先完畢數據的增刪改。然后再觸發,觸發的語句晚於監視的增刪改。無法影響前面的增刪修改作;也就是說先插入訂單記錄,再更新商品數量。當商品數量少於訂單數量時造成爆庫。
before:先完畢觸發。在進行增刪改。觸發語句先於監視的增刪改。我們就有機會推斷。改動即將發生的操作。
案例操作:
觸發器
使用after
:
當某個訂單的數量超過庫存的數量時會出現庫存為負數。
造成所謂的爆庫問題。
#創建觸發器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$$

觸發器
使用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$$
