注冊|登錄

聯系電話:024-31891684  13390130939
沈陽軟件公司--沈陽軟件定制

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

Latest technology最新技術

MySQL觸發器學習總結

瀏覽量:2590

#創建觸發器,當往order表中添加記錄是,更新goods表

delimiter $

CREATETRIGGERtrigger1

AFTER INSERTON`order`

FOREACH ROW

BEGIN

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

END$

 

執行

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

SELECT*FROMgoods WHEREid=1

發現電視機的數量剩下30

 

當執行

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

發現

冰箱的數量剩下-77

 

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

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

中的much字段)進行過濾

解決辦法:

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

 

 

首先,得刪除先去的觸發器

droptriggertrigger1;

 

#創建觸發器

#觸發時間: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$
這樣,當執行INSERT INTO `order` (gid,much) VALUES(2,100)的時候,寫入order表的下單數量其實只有5,同樣,goods表中的庫存數量只有減少5,因為在insert操作之前先觸發了
update操作,借此可以對下單數量做個判斷

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

主站蜘蛛池模板: 亚洲精品无码久久久久AV麻豆| 国产深夜福利在线观看网站 | 蜜臀久久99精品久久久久久 | 日本成人免费网站| 亚洲国产香蕉视频欧美| 男女爱爱视频网站| 国产-第1页-浮力影院| 亚洲综合色丁香婷婷六月图片 | 国产人澡人澡澡澡人碰视频| bbw巨大丰满xxxx| 国产香蕉视频在线| bt最佳磁力搜索引擎吧| 快一点使劲c我在线观看| 国产xxxxx| 91网站在线看| 国产精品人人做人人爽人人添| 99爱在线视频这里只有精品| 嫩草伊人久久精品少妇av| 中文字幕色婷婷在线视频| 波多野结衣被躁| 午夜三级国产精品理论三级| 蜜臀AV无码精品人妻色欲| 国产成人在线网址| 网站在线观看你懂的| 国产麻豆综合视频在线观看| japanese日本护士高潮| 年轻人免费看电影网站| 中文字幕国产在线| 日产精品99久久久久久| 久久精品人人槡人妻人人玩AV| 校花的好大的奶好爽漫画| 亚洲无码一区二区三区| 波多野结衣bt| 亚洲视频精品在线观看| 男孩子和男孩子在一起do| 午夜a级理论片在线播放| 美女把尿口扒开让男人桶到出水| 国产一区二区三区影院| 草草影院私人免费入口| 国产亚洲精品自在久久| 韩国午夜理伦三级2020韩|