<noscript id="eassg"><table id="eassg"></table></noscript>
  • <strike id="eassg"><s id="eassg"></s></strike>
  • <ul id="eassg"></ul>
    注冊|登錄

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

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

    Latest technology最新技術

    MySQL觸發器學習總結

    瀏覽量:2522

    #創建觸發器,當往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$

    執行

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

    SELECT * FROM goods WHERE id=1
    發現 電視機的數量剩下30

    當執行

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

    發現
    冰箱的數量剩下
    -77

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


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

    drop trigger trigger1;

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

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

    精品av天堂毛片久久久| 无码人妻精品一区二区三区东京热| 国产精品久久久精品三级| 色花堂国产精品第一页| 伊人久久精品线影院| 精品视频一区二区三区免费| 久久99精品国产99久久6| 精品在线免费视频| 中文一国产一无码一日韩| 国产精品扒开做爽爽爽的视频| 国产午夜精品片一区二区三区| 91成人精品视频| 亚洲国产精品自在线一区二区| 国产亚洲精品va在线| 精品亚洲视频在线观看| 日韩精品无码免费视频| 精品无码日韩一区二区三区不卡| 国产精品高清尿小便嘘嘘| 国产精品夜夜春夜夜爽久久小| 国产综合色香蕉精品五月婷| porn在线精品视频| 91大神在线精品视频一区| 午夜精品福利视频| 亚洲AV无码精品无码麻豆| 水蜜桃精品一二三| 国产成人无码精品一区不卡| 日韩电影中文字幕| 久久久久久亚洲精品不卡 | 国产国产精品人在线观看| 久久精品国产精品亚洲人人| 亚洲国产精品丝袜在线观看| 精品一区二区三区中文| 日韩人妻高清精品专区| 日韩a级一片在线观看| 日韩黄色免费观看| 亚洲区日韩精品中文字幕| 亚洲AV日韩AV永久无码色欲| 无码日韩精品一区二区免费| 亚洲日韩乱码中文无码蜜桃臀| 日韩午夜福利无码专区a| 日韩亚洲国产综合高清|