注冊(cè)|登錄

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

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

Latest technology最新技術(shù)

MySQL觸發(fā)器學(xué)習(xí)總結(jié)

瀏覽量:2524

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

CREATE TRIGGER trigger1
AFTER
INSERT ON `order`
FOR EACH ROW
BEGIN
UPDATE goods SET num=num-new.much WHERE id=new.gid;
END$

執(zhí)行

INSERT INTO `order` (gid,much) VALUES(1,5)

SELECT * FROM goods WHERE id=1
發(fā)現(xiàn) 電視機(jī)的數(shù)量剩下30

當(dāng)執(zhí)行

INSERT INTO `order` (gid,much) VALUES(2,100)

發(fā)現(xiàn)
冰箱的數(shù)量剩下
-77

這是一個(gè)很明顯的漏洞,如何補(bǔ)救呢?
由于update事件是在insert之后發(fā)生的,所以我們無法事先對(duì)用戶的下單數(shù)量(即order表
中的much字段)進(jìn)行過濾
解決辦法:
在創(chuàng)建觸發(fā)器的時(shí)候,將after關(guān)鍵字改成before,并對(duì)用戶的下單數(shù)量進(jìn)行判斷


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

drop trigger trigger1;

#創(chuàng)建觸發(fā)器
#觸發(fā)時(shí)間:before
delimiter $

CREATE TRIGGER trigger1
BEFORE
INSERT ON `order`
FOR EACH ROW
BEGIN
IF new.much >5 THEN
SET new.much=5
END IF;
UPDATE goods SET num=num-new.much WHERE id=new.gid;
END$
這樣,當(dāng)執(zhí)行INSERT INTO `order` (gid,much) VALUES(2,100)的時(shí)候,寫入order表的下單數(shù)量其實(shí)只有5,同樣,goods表中的庫(kù)存數(shù)量只有減少5,因?yàn)樵趇nsert操作之前先觸發(fā)了
update操作,借此可以對(duì)下單數(shù)量做個(gè)判斷

沈陽(yáng)團(tuán)購(gòu)網(wǎng)|營(yíng)口網(wǎng)站制作|沈陽(yáng)軟件公司|軟件定制|網(wǎng)站建設(shè)|加盟易勢(shì)|提交問題

主站蜘蛛池模板: 亚洲aⅴ男人的天堂在线观看| 喝茶影视喝茶影院最新电影电视剧 | 精品国产v无码大片在线看| 国产成人无码18禁午夜福利P| 91香蕉视频下载导航| 好男人社区神马在线观看www| 国产一区二区精品久久岳| 香蕉视频黄在线观看| 天天干天天操天天摸| 亚洲一区二区三区在线观看网站| 牛牛影院毛片大全免费看| 国产国产成人精品久久| 香蕉视频污在线观看| 在线毛片免费观看| 一二三四视频免费视频| 最近最新中文字幕| 亚洲日韩亚洲另类激情文学| 里番acg全彩| 在线免费观看a级片| 一本大道加勒比久久| 抱着cao才爽的视频| 久久综合九色综合欧美就去吻| 精品久久久久久无码专区| 国产三级av在线播放| 鸥美一级黄色片| 国产欧美精品一区二区| yw在线观看成人免费| 日韩欧美高清视频| 人人公开免费超级碰碰碰视频| 鲁一鲁中文字幕久久| 国产真实伦实例| 丝袜情趣在线资源二区| 国产网站在线免费观看| 97久久精品无码一区二区天美 | 狼群资源网在线视频免费观看| 医生系列小说合集| 美女尿口免费影视app| 国产真实老熟女无套内射| 69av在线视频| 川上优最新中文字幕不卡| 乌克兰大白屁股|