觸發器中Before與After區別

2021-09-28 14:19:08 字數 466 閱讀 8429

基本概念:

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...