




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
創(chuàng)建和使用觸發(fā)器創(chuàng)建和使用觸發(fā)器【任務(wù)提出】
一天,王寧向李老師請教問題:“老師,我向student表中添加了一條學(xué)生記錄,但是忘了修改class表中number列的值,導(dǎo)致class表中統(tǒng)計(jì)的學(xué)生人數(shù)與實(shí)際不相符。”
李老師告訴王寧,為了防止這種情況,MySQL中提供了觸發(fā)器機(jī)制,當(dāng)我們向student表中添加一條學(xué)生記錄時(shí),自動(dòng)觸發(fā)修改class表的number列,從而解決數(shù)據(jù)不一致問題。觸發(fā)器概述觸發(fā)器(Trigger)是一種特殊的存儲(chǔ)過程,它與表緊密相連,可以是表定義的一部分。當(dāng)預(yù)定義的事件(如用戶修改指定表或者視圖中的數(shù)據(jù)時(shí))發(fā)生時(shí),觸發(fā)器將會(huì)自動(dòng)執(zhí)行。觸發(fā)器基于一個(gè)表創(chuàng)建,但是可以針對多個(gè)表進(jìn)行操作。所以觸發(fā)器可以用來對表實(shí)施復(fù)雜的完整性約束,當(dāng)觸發(fā)器所保存的數(shù)據(jù)發(fā)生改變時(shí),觸發(fā)器被自動(dòng)激活,從而防止對數(shù)據(jù)進(jìn)行不正確的修改。觸發(fā)器概述觸發(fā)器自動(dòng)執(zhí)行,在表的數(shù)據(jù)做了任何修改(比如手工輸入或者使用程序采集的操作)之后立即激活觸發(fā)器可以通過數(shù)據(jù)庫中的相關(guān)表進(jìn)行層疊更改。這比直接把代碼寫在前臺(tái)的做法更安全合理觸發(fā)器可以強(qiáng)制限制,這些限制比用CHECK約束所定義的更復(fù)雜。與CHECK約束不同的是,觸發(fā)器可以引用其他表中的列觸發(fā)器的優(yōu)點(diǎn)如下所述:創(chuàng)建觸發(fā)器因?yàn)橛|發(fā)器是一種特殊的存儲(chǔ)過程,所以觸發(fā)器的創(chuàng)建和存儲(chǔ)過程的創(chuàng)建方式有很多相似之處,其基本語法格式如下:CREATETRIGGERtrigger_nametrigger_timetrigger_eventONtb_nameFOREACHROWtrigger_statement;01利用命令創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)器
在觸發(fā)器的SQL語句中,可以關(guān)聯(lián)表中的任何列,通過使用OLD和NEW列名來標(biāo)識(shí),如OLD.col_name、NEW.col_name。OLD.col_name關(guān)聯(lián)現(xiàn)有的行的一列在被更新或刪除前的值。NEW.col_name關(guān)聯(lián)一個(gè)新行的插入或更新現(xiàn)有的行的一列的值。
對于INSERT語句,只有NEW是合法的。對于DELETE語句,只有OLD是合法的。對于UPDATE語句,NEW和OLD可以同時(shí)使用。創(chuàng)建觸發(fā)器
【例1】在gradem數(shù)據(jù)庫的teacher表中,定義一個(gè)觸發(fā)器,當(dāng)一個(gè)教師的信息被刪除時(shí),把該教師的編號(hào)和姓名添加到delteacher表中。如何實(shí)現(xiàn)呢?USEgradem;CREATETABLEdelteacherSELECTtno,tnameFROMteacherWHERE1=0;CREATETRIGGERtrig_teacherAFTERDELETEONteacherFOREACHROWINSERTINTOdelteacher(tno,tname)values(old.tno,old.tname);創(chuàng)建觸發(fā)器在Navicat中,連接到MySQL服務(wù)器。展開【mysql】|【gradem】|【表】,在創(chuàng)建student表的窗口中選中【觸發(fā)器】選項(xiàng)卡分別在【觸發(fā)器】選項(xiàng)卡的【名】、【觸發(fā)】、【觸發(fā)時(shí)機(jī)】等列里輸入或選定相關(guān)信息在窗口下方的【定義】選項(xiàng)卡中指定觸發(fā)器執(zhí)行的SQL語句,然后單擊【保存】按鈕,該觸發(fā)器創(chuàng)建成功02使用Navicat圖形工具創(chuàng)建觸發(fā)器查看觸發(fā)器
查看觸發(fā)器是指查看數(shù)據(jù)庫中已存在的觸發(fā)器的定義、狀態(tài)和語法信息等。可以通過命令來查看已經(jīng)創(chuàng)建的觸發(fā)器。SHOWTRIGGERS;利用SHOWTRIGGERS語句查看通過SHOWTRIGGERS語句查看觸發(fā)器的基本語法如下:查看觸發(fā)器SELECT*FROMinformation_schema.triggers;在triggers表中查看觸發(fā)器的信息
在MySQL中,所有觸發(fā)器的定義都存在information_schema數(shù)據(jù)庫下的triggers表中。查詢triggers表,可以查看到數(shù)據(jù)庫中所有觸發(fā)器的詳細(xì)信息。查詢的語句如下:查看觸發(fā)器SELECT*FROMinformation_schema.triggersWHEREtrigger_name='觸發(fā)器名稱';也可以查詢指定觸發(fā)器的詳細(xì)信息,其語句的基本格式如下:其中,觸發(fā)器名稱要用單引號(hào)(‘’)引起來查看觸發(fā)器SELECT*FROMinformation_schema.triggersWHEREtrigger_name='trig_teacher';例如,利用SELECT語句查詢觸發(fā)器trig_teacher的信息,代碼執(zhí)行如下:刪除觸發(fā)器DROPTRIGGER[dbname.]trig_name;使用DROPTRIGGER語句可刪除當(dāng)前數(shù)據(jù)庫的觸發(fā)器。其基本語法如下:其中,dbname表示數(shù)據(jù)庫名,如果缺省,表示刪除當(dāng)前數(shù)據(jù)庫中的觸發(fā)器。trig_name表示要?jiǎng)h除的觸發(fā)器的名稱刪除觸發(fā)器USEgradem;DROPTRIGGERtrig_teacher;例如,刪除觸發(fā)器“trig_teacher”,可以使用如下語句:創(chuàng)建和使用觸發(fā)器【任務(wù)實(shí)施】王寧根據(jù)所學(xué)的觸發(fā)器知識(shí),寫出了以下代碼:(1)使用CREATETRIGGER語句創(chuàng)建觸發(fā)器trig_classnumUSEgradem;CREATETRIGGERtrig_classnumAFTERINSERTONstudentFOREACHROWUPDATEclassSETnumber=number+1WHEREclassno=left(new.sno,8);創(chuàng)建和使用觸發(fā)器【任務(wù)實(shí)施】(2)驗(yàn)證觸發(fā)器是否會(huì)自動(dòng)執(zhí)行。在INSERT語句之前、之后各執(zhí)行一條SELECT語句,比較一下插入記錄前后處理狀態(tài)的變化。具體驗(yàn)證步驟如下:①SELECTnumberas插入前班級(jí)人數(shù)FROMclassWHEREclassno='20200301';+----------------+|插入前班級(jí)人數(shù)|+----------------+|47|+----------------+1rowinset創(chuàng)建和使用觸發(fā)器②INSERTINTOstudent(sno,sname,ssex)VALUES('2020030148','李勇','男');③SELECTnumbera
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江海洋大學(xué)《女性文學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇理工學(xué)院《醫(yī)學(xué)信息學(xué)2》2023-2024學(xué)年第一學(xué)期期末試卷
- 嘉興南洋職業(yè)技術(shù)學(xué)院《生物藥劑與藥動(dòng)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海電影藝術(shù)職業(yè)學(xué)院《營銷模型與數(shù)據(jù)分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 《團(tuán)隊(duì)建設(shè)經(jīng)驗(yàn)分享》課件
- 單位內(nèi)控提升方案范本
- 無縫式科研橋臺(tái)施工方案
- 2025南海郵輪旅游專用合同
- 2025合作合同簽訂邀請函模板
- 煙臺(tái)降噪圍擋施工方案
- GB/T 16422.3-2022塑料實(shí)驗(yàn)室光源暴露試驗(yàn)方法第3部分:熒光紫外燈
- GB/T 1303.2-2009電氣用熱固性樹脂工業(yè)硬質(zhì)層壓板第2部分:試驗(yàn)方法
- GB/T 1282-1996化學(xué)試劑磷酸
- 租賃條件確認(rèn)書模板范文
- 招標(biāo)采購基礎(chǔ)知識(shí)培訓(xùn)課件
- 2020年單招烹飪高考試卷
- 護(hù)士優(yōu)秀帶教老師先進(jìn)事跡(共3篇)
- 結(jié)晶器振動(dòng)PPT資料
- 《人工智能對會(huì)計(jì)職業(yè)的影響及對策(論文)6200字》
- 2023年鄭州醫(yī)藥健康職業(yè)學(xué)院單招綜合素質(zhì)考試筆試題庫及答案解析
- 《大數(shù)據(jù)背景下人力資源管理創(chuàng)新研究【論文】》
評(píng)論
0/150
提交評(píng)論