MySQL數(shù)據(jù)庫(kù)原理與應(yīng)用(微課版)ch12觸發(fā)器_第1頁(yè)
MySQL數(shù)據(jù)庫(kù)原理與應(yīng)用(微課版)ch12觸發(fā)器_第2頁(yè)
MySQL數(shù)據(jù)庫(kù)原理與應(yīng)用(微課版)ch12觸發(fā)器_第3頁(yè)
MySQL數(shù)據(jù)庫(kù)原理與應(yīng)用(微課版)ch12觸發(fā)器_第4頁(yè)
MySQL數(shù)據(jù)庫(kù)原理與應(yīng)用(微課版)ch12觸發(fā)器_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論