首頁  >  文章  >  資料庫  >  Mysql高級之觸發器

Mysql高級之觸發器

高洛峰
高洛峰原創
2016-12-02 13:51:17973瀏覽

觸發器是一類特殊的事務 ,可以監視某種資料操作(insert/update/delete),並觸發相關操作(insert/update/delete)。

Mysql高級之觸發器

看以下事件:

Mysql高級之觸發器

完成下單與減少庫存的邏輯

Insert into o  p. goods_num = goods_num - 3 where id = 2;// 更新過程

 

這兩個邏輯可以看成一個整體,或者說, insert ---> .

我們可以監視某表的變化,當發生某種變化時,觸發某個操作.

創建觸發器的語法

Create trigger triggerName 名

For each row #這句話是固定的

Mysql高級之觸發器Begin

Sql語句;  # 一句或多句,insert/update/delete

:End

; Drop trigger 觸發器名稱

 

查看觸發器

Show triggers

如何在觸發器引用行的值

每列的值 ,用new.列名來表示.

 

對於 delete, 原本有一行,後來被刪除,

想引用被刪除的這一行,用old,來表示,  old.列名,就可以引用刪除行中的值.

 

Mysql高級之觸發器對於update來說,

被修改的行, 

修改前的資料 ,用 old來表示, old.列名被修改之前行中的被引用值

修改後的資料,用new 來表示, new.列名引用被修改之後行中的值

觸發器裡after 和before的區別

觸發器裡after 和before的區別

,刪除,改再觸發,

觸發的語句晚於監視的增,刪除,改,無法影響前面的增刪改動作.

 Mysql高級之觸發器

Before是先完成觸發,再增刪改,

Mysql高級之觸發器觸發的語句先完成觸發,再增刪改,

觸發的語句先於監視的增加,刪除,更改發生,我們有機會判斷,修改即將發生的操作.

 

 

典型案例:

對於所下訂單,進行判斷,如果訂單的數量 > 5 ,就認為是惡意訂單,

強制把所訂的商品數量改成5

查看哪些觸發器:

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn