版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第12章
觸發(fā)器本章概述MySQL的觸發(fā)器和存儲(chǔ)過(guò)程一樣,都是嵌入MySQL的一段程序。觸發(fā)器是由事件來(lái)觸發(fā)某個(gè)操作的,這些事件包括INSERT、UPDATAE和DELETE語(yǔ)句。如果定義了觸發(fā)程序,當(dāng)數(shù)據(jù)庫(kù)執(zhí)行這些語(yǔ)句的時(shí)候就會(huì)激發(fā)觸發(fā)器執(zhí)行相應(yīng)的操作,觸發(fā)程序是與表有關(guān)的命名數(shù)據(jù)庫(kù)對(duì)象,當(dāng)表上出現(xiàn)特定事件時(shí),將激活該對(duì)象。本章學(xué)習(xí)目標(biāo)了解什么是觸發(fā)器;掌握創(chuàng)建、查看、刪除觸發(fā)器的方法;掌握觸發(fā)器的使用技巧;熟練掌握綜合使用觸發(fā)器的方法和技巧。目錄01020304觸發(fā)器的使用查看觸發(fā)器刪除觸發(fā)器創(chuàng)建觸發(fā)器05觸發(fā)器綜合示例06本章小結(jié)創(chuàng)建觸發(fā)器觸發(fā)器是一個(gè)特殊的存儲(chǔ)過(guò)程,不同的是,執(zhí)行存儲(chǔ)過(guò)程要使用CALL語(yǔ)句來(lái)調(diào)用,而觸發(fā)器的執(zhí)行不需要使用CALL語(yǔ)句來(lái)調(diào)用,也不需要手工啟動(dòng),只要當(dāng)一個(gè)預(yù)定義的事件發(fā)生的時(shí)候,就會(huì)被MySQL自動(dòng)調(diào)用。比如當(dāng)對(duì)tb_fruits表進(jìn)行操作(INSERT、DELETE或UPDATE)時(shí)就會(huì)激活它執(zhí)行。創(chuàng)建只有一個(gè)執(zhí)行語(yǔ)句的觸發(fā)器創(chuàng)建觸發(fā)器創(chuàng)建一個(gè)觸發(fā)器的語(yǔ)法如下:CREATETRIGGERtrigger_nametrigger_timetrigger_eventONtbl_nameFOREACHROWtrigger_stmt其中,trigger_name表示觸發(fā)器名稱,用戶自行指定;trigger_time表示觸發(fā)時(shí)機(jī),可以指定為before或after;trigger_event表示觸發(fā)事件,包括INSERT、UPDATE和DELETE;tbl_name表示建立觸發(fā)器的表名,即在哪張表上建立觸發(fā)器;trigger_stmt是觸發(fā)器執(zhí)行語(yǔ)句。創(chuàng)建只有一個(gè)執(zhí)行語(yǔ)句的觸發(fā)器創(chuàng)建觸發(fā)器【例12-1】創(chuàng)建一個(gè)單執(zhí)行語(yǔ)句的觸發(fā)器,代碼如下:CREATETABLEtb_account(acct_numINT,amountDECIMAL(10,2));CREATETRIGGERins_sumBEFOREINSERTONtb_accountFOREACHROWSET@sum=@sum+NEW.amount;代碼執(zhí)行結(jié)果如圖所示。創(chuàng)建只有一個(gè)執(zhí)行語(yǔ)句的觸發(fā)器創(chuàng)建觸發(fā)器創(chuàng)建多個(gè)執(zhí)行語(yǔ)句的觸發(fā)器,語(yǔ)法格式如下:CREATETRIGGERtrigger_nametrigger_timetrigger_eventONtbl_nameFOREACHROWBEGIN語(yǔ)句執(zhí)行列表END其中,trigger_name表示觸發(fā)器的名稱,用戶自行指定;trigger_time表示觸發(fā)時(shí)機(jī),可以指定為before或after;trigger_event表示觸發(fā)事件,包括INSERT、UPDATE和DELETE;tbl_name表示建立觸發(fā)器的表名,即在哪張表上建立觸發(fā)器;觸發(fā)器程序可以使用BEGIN和END作為開(kāi)始和結(jié)束,中間包含多條語(yǔ)句。創(chuàng)建有多個(gè)執(zhí)行語(yǔ)句的觸發(fā)器目錄觸發(fā)器的使用查看觸發(fā)器刪除觸發(fā)器創(chuàng)建觸發(fā)器觸發(fā)器綜合示例本章小結(jié)010203040506查看觸發(fā)器信息通過(guò)SHOWTRIGGERS語(yǔ)句查看觸發(fā)器信息的語(yǔ)句如下:SHOWTRIGGERS;查看觸發(fā)器查看觸發(fā)器在MySQL中,所有觸發(fā)器的定義都存在于INFORMATION_SCHEMA數(shù)據(jù)庫(kù)的TRIGGERS表格中,可以通過(guò)查詢命令SELECT來(lái)查看,具體的語(yǔ)法如下:SELECT*FROMINFORMATION_SCHEMA.TRIGGERSWHEREcondition;查看觸發(fā)器目錄觸發(fā)器的使用查看觸發(fā)器刪除觸發(fā)器創(chuàng)建觸發(fā)器觸發(fā)器綜合示例本章小結(jié)010405060302觸發(fā)器的使用觸發(fā)程序與表相關(guān),當(dāng)對(duì)表執(zhí)行INSERT、DELETE或UPDATE語(yǔ)句時(shí),將激活觸發(fā)程序。可以將觸發(fā)程序設(shè)置為在執(zhí)行語(yǔ)句之前或之后激活。例如,可以在從表中刪除每一行之前,或在更新每一行之后激活觸發(fā)程序。目錄觸發(fā)器的使用查看觸發(fā)器刪除觸發(fā)器創(chuàng)建觸發(fā)器觸發(fā)器綜合示例本章小結(jié)010506020403刪除觸發(fā)器使用DROPTRIGGER語(yǔ)句可以刪除MySQL中已經(jīng)定義的觸發(fā)器,刪除觸發(fā)器的基本語(yǔ)法格式如下:DROPTRIGGER[schema_name.]trigger_name其中,schema_name表示數(shù)據(jù)庫(kù)名稱,是可選的,如果省略了schema,那么將從當(dāng)前數(shù)據(jù)庫(kù)中舍棄觸發(fā)程序;trigger_name是要?jiǎng)h除的觸發(fā)器的名稱。刪除觸發(fā)器目錄觸發(fā)器的使用查看觸發(fā)器刪除觸發(fā)器創(chuàng)建觸發(fā)器觸發(fā)器綜合示例本章小結(jié)010602030504觸發(fā)器綜合示例創(chuàng)建觸發(fā)器的實(shí)例,每更新一次tb_persons表的num字段后,都要更新tb_sales表對(duì)應(yīng)的sum字段。字段名數(shù)據(jù)類型主鍵外鍵非空唯一自增namevarchar(40)否否是否否numint(11)否否是否否字段名數(shù)據(jù)類型主鍵外鍵非空唯一自增namevarchar(40)否否是否否sumint(11)否否是否否觸發(fā)器綜合示例(1)創(chuàng)建一個(gè)業(yè)務(wù)統(tǒng)計(jì)表tb_persons,代碼如下:CREATETABLEtb_persons(nameVARCHAR(40),numint);(2)創(chuàng)建一個(gè)銷售額表tb_sales,代碼如下:CREATETABLEtb_sales(nameVARCHAR(40),sumINT);(3)創(chuàng)建一個(gè)觸發(fā)器。創(chuàng)建一個(gè)觸發(fā)器,在更新過(guò)tb_persons表的num字段后,更新tb_sales表的sum字段,代碼如下:CREATETRIGGERnum_sumAFTERINSERTONtb_personsFOREACHROWINSERTINTOtb_salesVALUES(NEW.name,7*NEW.num);向tb_persons表中插入記錄。插入新的記錄后,更新銷售額表。INSERTINTOtb_personsVALUES('xiaoxiao',20),('xiaohua',69);執(zhí)行查詢?nèi)缦拢篠ELECT*FROMtb_persons;SELECT*FROMtb_sales;目錄觸發(fā)器的使用查看觸發(fā)器刪除觸發(fā)器創(chuàng)建觸發(fā)器觸發(fā)器綜合示例本章小結(jié)010203040605本章小結(jié)MySQL的觸發(fā)器和存儲(chǔ)過(guò)程一樣,都是嵌入MySQL的一段程序。觸發(fā)器是由事件來(lái)觸發(fā)某個(gè)操作的,這些事件包括INSERT、UPDATAE和DELETE語(yǔ)句。如果定義了觸發(fā)程序,當(dāng)數(shù)據(jù)庫(kù)執(zhí)行這些語(yǔ)句的時(shí)候就會(huì)激發(fā)觸發(fā)器執(zhí)行相應(yīng)的操作,觸發(fā)程序是與表有關(guān)的命名數(shù)據(jù)庫(kù)對(duì)象,當(dāng)表上出現(xiàn)特定事件時(shí),將激活該觸發(fā)器對(duì)象。本章首先詳細(xì)介紹了觸發(fā)器的創(chuàng)建,包括單執(zhí)行語(yǔ)句
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《硫酸工藝學(xué)》課件
- 二尿素裝置安全課課件
- 《燒傷基礎(chǔ)知識(shí)》課件
- 《湖南鄉(xiāng)土地理》課件
- 《孕婦學(xué)校講課》課件
- 單位管理制度集合大合集職工管理
- 單位管理制度集粹匯編人員管理篇十篇
- 單位管理制度分享匯編【人力資源管理篇】十篇
- 單位管理制度分享大全職員管理篇十篇
- 2024教師安全責(zé)任協(xié)議書(shū)(28篇)
- 2025年國(guó)家圖書(shū)館招聘筆試參考題庫(kù)含答案解析
- 機(jī)器人課程課程設(shè)計(jì)
- 南充市市級(jí)事業(yè)單位2024年公招人員擬聘人員歷年管理單位遴選500模擬題附帶答案詳解
- 9.2溶解度(第2課時(shí))-2024-2025學(xué)年九年級(jí)化學(xué)人教版(2024)下冊(cè)
- 安全知識(shí)考試題庫(kù)500題(含答案)
- 中國(guó)重癥患者腸外營(yíng)養(yǎng)治療臨床實(shí)踐專家共識(shí)(2024)解讀
- 最新中考英語(yǔ)單詞表2200個(gè)
- 我的專業(yè)成長(zhǎng)故事
- 公司管理制度-公司管理制度
- 井用潛水泵的安裝
- 疫情索賠公式及相應(yīng)表格模板Excel
評(píng)論
0/150
提交評(píng)論