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ù)具有操作數??據??庫的某種權利。例如不??允許下班后和節假日修改數據 庫數據;

審計:可以跟蹤用戶(hù)對數據庫的(de)紹使操作;

實(shí)現復雜的數據(ju)完整性( ?° ?? ?°)規則。例如,器和觸發(fā)器可回退任何企圖吃進(jìn)超過(guò)自己保證金的游標用期貨;

提供了運行計劃任務(wù)的另一種方法。例如,紹使如果公司的(′-ι_-`)器和帳號上的資金低于 5 萬(wàn)元則立即給財務(wù)人員發(fā)送 警告數據。

MySQL 中使用觸(′▽?zhuān)?發(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);

tirgger_time:觸發(fā)時(shí)機,為 BEFORE 或者 AFTER;

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ā)器新舊記錄

MySQL 中定義了 NEW 和 OLD,用來(lái)表示觸發(fā)器的所在表中,觸發(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