觸發器是一類特殊的事務 ,可以監視某種資料操作(insert/update/delete),並觸發相關操作(insert/update/delete)。
看以下事件:
完成下單與減少庫存的邏輯
Insert into o p. goods_num = goods_num - 3 where id = 2;// 更新過程
這兩個邏輯可以看成一個整體,或者說, insert ---> .
我們可以監視某表的變化,當發生某種變化時,觸發某個操作.
創建觸發器的語法Create trigger triggerName 名For each row #這句話是固定的Begin
Sql語句; # 一句或多句,insert/update/delete
:End
; Drop trigger 觸發器名稱 查看觸發器Show triggers如何在觸發器引用行的值
每列的值 ,用new.列名來表示. 對於 delete, 原本有一行,後來被刪除,想引用被刪除的這一行,用old,來表示, old.列名,就可以引用刪除行中的值.對於update來說,
被修改的行,
修改前的資料 ,用 old來表示, old.列名被修改之前行中的被引用值
修改後的資料,用new 來表示, new.列名引用被修改之後行中的值
觸發器裡after 和before的區別
觸發器裡after 和before的區別,刪除,改再觸發,
觸發的語句晚於監視的增,刪除,改,無法影響前面的增刪改動作.
Before是先完成觸發,再增刪改,
觸發的語句先完成觸發,再增刪改,
觸發的語句先於監視的增加,刪除,更改發生,我們有機會判斷,修改即將發生的操作.
典型案例:
對於所下訂單,進行判斷,如果訂單的數量 > 5 ,就認為是惡意訂單,
強制把所訂的商品數量改成5
查看哪些觸發器: