日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三、触发器

發布時間:2025/5/22 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三、触发器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

三、觸發器:觸發trigger?(槍擊、扳機、引線)

??????作用:監視某種情況并觸發某種操作,可以監視增刪改,觸發增刪改

??????

??????監視對象:表

??????監視操作:insert

??????觸發操作:update

??????觸發時間:after???

??????創建觸發器語法:

create?trigger?觸發器名稱?after/before?insert/update/delete?on?表名?for?each?row?begin???sql語句????end;?

?????????????????????

改變mysql結束符:delimiter?結束符,可以是#$等,默認是;分號

>delimiter?$

>create?trigger?tg1?after?insert?on?o?for?each?row?begin?update?g?set?num=num-3?where?id=2;?end$

如何在觸發器中引用行的值,對于新增的行用new表示,行中每一列的值用?new.列名?表示

1、添加訂單,庫存減少

>create?trigger?tg2?after?insert?on?o?for?each?row?begin?update?g?set?num=num-new.muth??where?id=new.gid;?end$

刪除觸發器語法:drop?trigger?觸發器名

實例:2、刪除一個訂單時,庫存相應增加?

?????????刪除之前的數據用old引用,數據列用old.列名

?????????>create?trigger?tg3?after?delete?on?o?for?each?row?begin?update?g?set?num=num+old.much??where?id=old.gid;?end$

?????????>?delete?from?o?where?oid=2$

?????????此時訂單被刪除,庫存相應增加?

??????3、修改一個訂單購買數量時,庫存相應改變

?????????對于update,修改前的數據用old表示old.列名?引用修改前的數據,

?????????修改后的數據用new表示,new.列名??

?????????>create?trigger?tg4?after?update?on?o?for?each?row?begin?update?g?set?num=num+old.much-new.much??where?id=old.gid;?end$

觸發器afterbefore區別:

??????after是先完成數據的增刪改,再觸發,觸發監視中的語句晚于增刪改,無法影響前面的增刪改

??????Before是先完成觸發在增刪改,觸發的語句先與觸發增刪改,我們有機會判斷修改即將發生的增刪改操作

案例:對于所下訂單進行判斷,如果訂單數量大于5,就認為是惡意訂單,強制吧所下訂單商品改為5

?????對同一表進行的同一觸發器不能重復,比如不能有兩個insert、兩個update、或兩個delete,否則會出現執行兩次觸發器,可以刪除一個觸發器,“drop?trigger?觸發器名”,

create?trigger?tg5

before?insert?on?o

for?each?row

begin

if?new.much?>?5?then

? set?new.much?=?5;

???????end?if;

???????update?g?set?num?=?num?-?new.much?where?id=new.gid;

end$

創建觸發器:creater?trigger;

刪除觸發器:delete?trigger;

如何查看觸發器:show?triggers;

總結

以上是生活随笔為你收集整理的三、触发器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。