MySQL中觸發(fā)器和游標的介紹與使用 DATE: 2026-05-05 04:53:33
這篇文章主要給大家介紹了關(guān)于MySQL中觸發(fā)器和游標的器和相關(guān)資料,文中通過(guò)示例代碼介紹的游標用非常詳細,對大家的紹使學(xué)習或者工作具有一定的參考學(xué)習價(jià)值,需要的器和朋友們下面隨著(zhù)小編來(lái)一起學(xué)習學(xué)習吧
觸發(fā)器簡(jiǎn)介
觸發(fā)器是和表關(guān)聯(lián)的特殊的存儲過(guò)程,可以在插入,游標用刪除或修改表中的紹使數據時(shí)觸發(fā)執行,比數據庫本身標準的器和功能有更精細和更復雜的數據控制能力。
觸??發(fā)器(qi)的游標用優(yōu)點(diǎn):
審計:可以跟蹤用戶(hù)對數據庫的(de)紹使操作;
實(shí)現復雜的數據(ju)完整性( ?° ?? ?°)規則。例如,器和觸發(fā)器可回退任何企圖吃進(jìn)超過(guò)自己保證金的游標用期貨;
提供了運行計劃任務(wù)的另一種方法。例如,紹使如果公司的(′-ι_-`)器和帳號上的資金低于 5 萬(wàn)元則立即給財務(wù)人員發(fā)送 警告數據。
創(chuàng )建觸發(fā)器
創(chuàng )建觸發(fā)器的游標用技巧就是記住觸發(fā)器的四要素:
監控地點(diǎn):table;??
監控事件:insert/update/delete;
觸發(fā)時(shí)間:a(′_`)fter/before;
觸發(fā)事件:insert/update/delete。
創(chuàng )建觸發(fā)器的紹使基本語(yǔ)法如下所示:
trigger_name:觸發(fā)器的名稱(chēng);
trigger_event:??觸發(fā)事件,為 INSERT、DELETE 或者 UPDATE;
tb_name:表示建立觸發(fā)器的表名,在哪張表上建立觸發(fā)器;
trigger_stmt:觸發(fā)器的程序體,可以是一條 SQL 語(yǔ)句或者是用 BEGIN 和 END 包含的多條語(yǔ)句;
FOR EACH ROW 表示任何一條記錄上的操作滿(mǎn)足觸發(fā)事件都會(huì )觸發(fā)該觸發(fā)器。
注意:對同一個(gè)表相同觸發(fā)時(shí)間的相同觸發(fā)事件,只能定義一個(gè)觸發(fā)器。
觸發(fā)器新舊記錄
在 INSERT 型觸發(fā)器中,NEW 用來(lái)表示將要(BEFORE或已經(jīng)(AFTER)插入的新數據;
在 UPDATE型觸發(fā)器中,OL??D 用來(lái)表示將要或已經(jīng)被修改的原數據,NEW 用來(lái)表示將要或已經(jīng)修改為的新 數據;
在 DELETE型觸發(fā)(fa)器中,OLD 用來(lái)表??示將要或已經(jīng)被刪除的原數據。
創(chuàng )建觸發(fā)器,當用戶(hù)購買(mǎi)商品時(shí),同時(shí)更新對應商品庫存記錄,代碼如下所示:
創(chuàng )建觸發(fā)器,當用戶(hù)刪除訂單時(shí),同時(shí)更新對應商品庫存記(╯°□°)╯錄,代碼如下所(′?_?`)示:
before 和 after 的區別
before 在執行語(yǔ)句之前after 在執行語(yǔ)句之后
當訂單商品數量超過(guò)庫存時(shí),修改訂單數量為最大庫存:
游標
游標簡(jiǎn)介
游標的作用就是用于對查詢(xún)數據(ju)庫所(′ω`)返回的記錄進(jìn)行遍歷,以便進(jìn)行相應的操作。游標有下面這些特征
游標是只讀的,也就是不能更新它;
游標是不能滾動(dòng)的,也就是只能在一個(gè)方向上進(jìn)行遍歷,不能在(/ω\)記錄之間隨意進(jìn)退(′?`),不能跳過(guò)某些記錄;
避免在已經(jīng)打開(kāi)游標的表上更??新數據。
創(chuàng )建游標
創(chuàng )建游標的語(yǔ)法包含四個(gè)部分:
定義游標:declare 游標名 cursor for select 語(yǔ)句;
打開(kāi)游標:open="" 游標名;
獲取結果:fetch游標名 into 變量名[,變量名];
關(guān)(guan)閉游標:c??lose 游標名;
創(chuàng )建一個(gè)過(guò)程 p1,使用游標返回 test 數據??庫中 student 表的第一個(gè)學(xué)生信息。代碼如下所示:
在 test 數據ヽ(′ー`)ノ庫創(chuàng )建一個(gè) student2 表,創(chuàng )??建一個(gè)過(guò)程 p2,使用游標提取 student 表中所有學(xué)生信息插入到 student2 表中。代碼如下所示:
總結
到此這篇關(guān)于MySQL中觸發(fā)器和游標的文章就介紹到這了,更多相關(guān)MySQL觸發(fā)器和游標內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家(jia)以后多多支持腳本之家!
來(lái)源:腳本之家
鏈接:https://www.jb51.neˉ\_(ツ)_/ˉt/article/207666.htm

