最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2012年09月04日 22:39:22   作者:  
創(chuàng)建觸發(fā)器,當(dāng)往order表中添加記錄是,更新goods表,大家可以看下語句即可
復(fù)制代碼 代碼如下:

#創(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;
復(fù)制代碼 代碼如下:

#創(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è)判斷

相關(guān)文章

  • mysql 5.7.15 安裝配置方法圖文教程(windows)

    mysql 5.7.15 安裝配置方法圖文教程(windows)

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.15 安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 深入理解MySQL中MVCC與BufferPool緩存機(jī)制

    深入理解MySQL中MVCC與BufferPool緩存機(jī)制

    這篇文章主要介紹了深入理解MySQL中MVCC與BufferPool緩存機(jī)制,MySQL默認(rèn)RR隔離級(jí)別就是通過該機(jī)制來保證的MVCC,更多主題相關(guān)內(nèi)容,需要的可以參考下面文章內(nèi)容介紹
    2022-05-05
  • MySQL表排序規(guī)則不同錯(cuò)誤問題分析

    MySQL表排序規(guī)則不同錯(cuò)誤問題分析

    這篇文章主要介紹了MySQL表排序規(guī)則不同錯(cuò)誤問題分析,小編覺得挺不錯(cuò)的,這里分享給大家,供各位參考。
    2017-10-10
  • mysql like查詢字符串示例語句

    mysql like查詢字符串示例語句

    在mysql中如果我們要模糊查詢數(shù)據(jù)我們可以使用like帶%%號(hào)來實(shí)現(xiàn)查詢,下面我來簡(jiǎn)單的介紹一下關(guān)于mysql like使用方法
    2013-10-10
  • Mysql的Table doesn't exist問題及解決

    Mysql的Table doesn't exist問題及解決

    這篇文章主要介紹了Mysql的Table doesn't exist問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • mysql之?dāng)?shù)字函數(shù)的具體使用

    mysql之?dāng)?shù)字函數(shù)的具體使用

    本文主要介紹了mysql之?dāng)?shù)字函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • MySQL5.5版本安裝與安裝失敗詳細(xì)講解

    MySQL5.5版本安裝與安裝失敗詳細(xì)講解

    MySQL是一款安全、跨平臺(tái)、高效的,并與PHP、Java等主流編程語言緊密結(jié)合的數(shù)據(jù)庫(kù)系統(tǒng),下面這篇文章主要給大家介紹了關(guān)于MySQL5.5版本安裝與安裝失敗詳細(xì)講解的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • MySQL的事務(wù)特性概念梳理總結(jié)

    MySQL的事務(wù)特性概念梳理總結(jié)

    這篇文章主要介紹了MySQL的事務(wù)特性概念梳理總結(jié),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • MySQL之遞歸小問題

    MySQL之遞歸小問題

    這篇文章主要介紹了MySQL之遞歸小問題,需要的朋友可以參考下
    2017-05-05
  • MySQL高級(jí)特性——數(shù)據(jù)表分區(qū)的概念及機(jī)制詳解

    MySQL高級(jí)特性——數(shù)據(jù)表分區(qū)的概念及機(jī)制詳解

    當(dāng)數(shù)據(jù)表過大時(shí),通過普通的查詢優(yōu)化技巧已經(jīng)無法大幅度提升性能,此時(shí)往往需要進(jìn)行分區(qū)分表優(yōu)化。分區(qū)其實(shí)是將一張邏輯上統(tǒng)一的表在物理上劃分成了多張表。分區(qū)操作對(duì)使用者而言是一個(gè)黑盒操作,但是如果你從文件系統(tǒng)上看,就會(huì)看到分區(qū)數(shù)據(jù)表的實(shí)際存儲(chǔ)方式是分開的。
    2021-05-05

最新評(píng)論

哈巴河县| 始兴县| 专栏| 新津县| 肃宁县| 磴口县| 宁津县| 龙里县| 乾安县| 潜江市| 万源市| 敦煌市| 西吉县| 元氏县| 正蓝旗| 扎囊县| 湟中县| 东城区| 宝坻区| 喀喇| 富川| 读书| 昌黎县| 青川县| 钦州市| 博爱县| 泗阳县| 闽侯县| 阜新市| 平罗县| 清镇市| 濮阳县| 那曲县| 浦县| 岱山县| 九龙城区| 崇信县| 新密市| 民丰县| 托克逊县| 津市市|