學習三十四天筆記——mysql事務觸發器函數過程:觸發器

MySQL TRIGGER 科技 重蔚自留地 2017-05-25

觸發器

當某個時間發生的時候,自動觸發的一段代碼。

觸發器由事件主體(對象),事件類型,事件觸發時間

用戶購物

商品表:商品信息,商品庫存

訂單表:訂單信息,商品信息,商品數量

當用戶下訂單之後,商品表的商品庫存需要減少

用戶退訂,商品的商品庫存需要增加

1.訂單表增加記錄(有商品數量)

2.商品表減少庫存(訂單表對應商品信息變化)

語法:

create trigger 觸發器名字 事件觸發時間 事件類型 on 表 for each row

[begin]

//觸發體,如果觸發體裡只有一條語句,那麼begin和end可以沒有

//如果觸發體裡有多條語句,那麼begin和end是必須的

[end]

事件觸發時間:before在操作之前,after在操作之後

事件類型:insert插入,update更改,delete刪除

創建一個最簡觸發器

學習三十四天筆記——mysql事務觸發器函數過程:觸發器

調用觸發器:系統自動調用

-- 當訂單表插入一條數據後,觸發定義的觸發器order_goods_t

學習三十四天筆記——mysql事務觸發器函數過程:觸發器

觸發器裡的操作不能固定,應當根據當前實際變更的數據信息來進行操作。

old:代表被操作之前的記錄對應是數據,觸發器針對的記錄被變更之前

new:代表被操作之後的記錄對應的數據,觸發器針對的記錄被變更之後

刪除觸發器:

語法:drop trigger 觸發器名字

學習三十四天筆記——mysql事務觸發器函數過程:觸發器

驗證

學習三十四天筆記——mysql事務觸發器函數過程:觸發器

在觸發器中使用對應的觸發觸發器的記錄

學習三十四天筆記——mysql事務觸發器函數過程:觸發器

觸發器使用

學習三十四天筆記——mysql事務觸發器函數過程:觸發器

觸發器有多少種?

六種:觸發時間 和 觸發事件類型 的積

before/after insert/update/delete;

哪些事件是沒有old,哪些事件沒有new

insert操作沒有old,delete沒有new

一張表最多可以有6個觸發器。

作業:前提是一張表有六個觸發器

1.insert into 表名 (值列表) on duplicate key update,會執行什麼觸發器?

2.replace into表名 (值列表)

if結構

語法:

if 條件判斷 then

執行相應於巨

end if;

如果商品表中的數量不足了,訂單則不應該生成?觸發器該怎麼操作。

在訂單表插入數據之前,先對商品表商品數量進行判斷。

1.因為是在插入之前先執行觸發器,那麼還沒有在訂單表裡插入數據

2.判斷失敗之後,觸發器不能中斷操作,沒有辦法限制後續插入訂單表的SQL語句的執行

相關推薦

推薦中...