mysql學習之創建簡單觸發器

最近看了燕十八mysql視頻,想着寫篇博客記錄一下

文章上傳整理與2017年9月26日 ,環境:win7-mysql5.6

觸發器:

 觸發器就是讓MySQL執行指定SQL語句之前/之後去自動執行某些操作或者說方法

結構:

CREATE TRIGGER `t1` //指定觸發器名稱
BEFORE  //指定在sql執行之前後者之後 ,AFTER/BEFORE
UPDATE  //哪些動作觸發觸發器update/insert/delete三選一
ON `t_test` //觸發器的表
FOR EACH ROW  //行級
begin  //標記開始

//核心代碼....

end; //標記結束

示例表:

一個訂單表,一個產品表(庫存表) ,訂單表每修改或者增加一筆訂單,相應的庫存應當減少,假設庫存爲100

  


需求1:

每插入一筆訂單,對應的庫存count減去much

全部代碼:

CREATE  TRIGGER `t_insert` 
BEFORE 
INSERT 
ON `t_order`
FOR EACH ROW 
begin

update t_product set count = count-new.much where id = new.pid; 

end;
如上 就實現了需求1  ,核心代碼中有一個new對象,new代表了新添加的t_order數據行,sql就不解釋了

需求2:

修改訂單實現對應的庫存加或者減 ,並且限制不能爆倉

代碼:

CREATE TRIGGER `t_update` 
BEFORE 
UPDATE 
ON `t_order`
FOR EACH ROW begin

declare
pcount int;
select count into pcount from t_product where id = new.pid;
if new.much>pcount then 
 set new.much=pcount ; 
end if;
update t_product set count=count+old.much-new.much where id=new.id;

end;

以上代碼只是簡單演示了在update一行數據時修改對應的庫存,具體效果有待商榷大笑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章