基本概念:
after:是先完成資料的增刪改,然後再觸發,觸發的語句晚於監視的增刪改,無法影響前面的增刪改動作;也就是說先插入訂單記錄,再更新商品數量。當商品數量少於訂單數量時造成爆庫。
before:先完成觸發,在進行增刪改,觸發語句先於監視的增刪改,我們就有機會判斷,修改即將發生的操作。如:我們在觸發之前需要判斷new值和old值的大小或關係,如果滿足要求就觸發,不通過就修改再觸發;如:表之間定義的有外來鍵,在刪除主鍵時,必須要先刪除外來鍵表,這時就有先後之分,這裡before相當於設定了斷點,我們可以處理刪除外來鍵。
before與after區別:
before:(insert、update)可以對new進行修改,after不能對new進行修改,兩者都不能修改old資料。
對於insert語句, 只有new是合法的;
對於delete語句,只有old才合法;
對於update語句,new、old可以同時使用。
mysql之觸發器before和after的區別
我們先做個測試 接上篇日誌建的商品表g和訂單表o和觸發器 假設 假設商品表有商品1,數量是10 我們往訂單表插入一條記錄 insert into o gid,much values 1,20 會發現商品1的數量變為 10了。這就是問題的所在,因為我們之前建立的觸發器是after,也就是說觸發的語句是...
mysql之觸發器before和after的區別
我們先做個測試 接上篇日誌建的商品表g和訂單表o和觸發器 假設 假設商品表有商品1,數量是10 我們往訂單表插入一條記錄 insert into o gid,much values 1,20 會發現商品1的數量變為 10了。這就是問題的所在,因為我們之前建立的觸發器是after,也就是說觸發的語句是...
觸發器中的BEFORE和AFTER區別
這章講述了觸發器中的兩個關鍵字的區別 首先,如何建立觸發器,格式如下 delimiter create trigger 觸發器名 before after insert update delete on for each row begin end delimiter 無論是insert updat...