注冊|登錄

聯(lián)系電話:024-31891684  13390130939
沈陽軟件公司--沈陽軟件定制

沈陽軟件開發(fā)_沈陽軟件公司_沈陽軟件定制/軟件/最新技術

Latest technology最新技術

MySQL觸發(fā)器學習總結

瀏覽量:2589

#創(chuàng)建觸發(fā)器,當往order表中添加記錄是,更新goods表

delimiter $

CREATETRIGGERtrigger1

AFTER INSERTON`order`

FOREACH ROW

BEGIN

UPDATEgoods SETnum=num-new.much WHEREid=new.gid;

END$

 

執(zhí)行

INSERTINTO`order` (gid,much) VALUES(1,5)

SELECT*FROMgoods WHEREid=1

發(fā)現(xiàn)電視機的數量剩下30

 

當執(zhí)行

INSERTINTO`order` (gid,much) VALUES(2,100)

發(fā)現(xiàn)

冰箱的數量剩下-77

 

這是一個很明顯的漏洞,如何補救呢?

由于update事件是在insert之后發(fā)生的,所以我們無法事先對用戶的下單數量(即order表

中的much字段)進行過濾

解決辦法:

在創(chuàng)建觸發(fā)器的時候,將after關鍵字改成before,并對用戶的下單數量進行判斷

 

 

首先,得刪除先去的觸發(fā)器

droptriggertrigger1;

 

#創(chuàng)建觸發(fā)器

#觸發(fā)時間:before

delimiter $

CREATETRIGGERtrigger1

BEFORE INSERTON`order`

FOREACH ROW

BEGIN

IFnew.much >5THEN

SETnew.much=5

ENDIF;

UPDATEgoods SETnum=num-new.much WHEREid=new.gid;

END$
這樣,當執(zhí)行INSERT INTO `order` (gid,much) VALUES(2,100)的時候,寫入order表的下單數量其實只有5,同樣,goods表中的庫存數量只有減少5,因為在insert操作之前先觸發(fā)了
update操作,借此可以對下單數量做個判斷

沈陽團購網|營口網站制作|沈陽軟件公司|軟件定制|網站建設|加盟易勢|提交問題

主站蜘蛛池模板: 国产精品自在欧美一区| 豪妇荡乳1一5白玉兰| 最新中文字幕一区| 亚洲香蕉免费有线视频| 草草影院国产第一页| 国产精品久久久久久| 99精品久久99久久久久| 日韩国产成人精品视频| 免费看欧美一级特黄a大片一| 91不卡在线精品国产| 少妇大战黑吊在线观看| 久久久久久人妻一区二区三区| 欧美a级毛欧美1级a大片| 又粗又硬又爽的三级视频| 91成人在线免费观看| 好男人官网资源在线观看| 中文字幕热久久久久久久| 欧美日韩在线国产| 俄罗斯一级成人毛片| 美女扒开胸罩摸双乳动图| 国产精品无码无在线观看| 中文字幕无码不卡一区二区三区| 日韩欧美电影在线| 亚洲人成网站色7799| 欧美精品一区二区久久| 四虎1515hm免费国产| 野外三级国产在线观看| 国产成人高清亚洲一区久久| www..com色| 性欧美vr高清极品| 五月婷婷丁香色| 欧美卡2卡4卡无卡免费| 午夜免费福利网站| 四虎1515hh永久久免费| 宅男噜66免费看网站| 最新国产你懂的在线网址| 亚洲国产精品久久久久婷婷软件| 美女让男人捅爽| 国产乱了真实在线观看| 香蕉在线视频播放| 国产成人精品无码专区|