數(shù)據(jù)庫原理實(shí)驗(yàn)5觸發(fā)器_第1頁
數(shù)據(jù)庫原理實(shí)驗(yàn)5觸發(fā)器_第2頁
數(shù)據(jù)庫原理實(shí)驗(yàn)5觸發(fā)器_第3頁
數(shù)據(jù)庫原理實(shí)驗(yàn)5觸發(fā)器_第4頁
數(shù)據(jù)庫原理實(shí)驗(yàn)5觸發(fā)器_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

孚驗(yàn)報(bào)0課程名稱 數(shù)據(jù)庫原理 實(shí)驗(yàn)序號(hào) 5 實(shí)驗(yàn)項(xiàng)目 觸發(fā)器 實(shí)驗(yàn)地點(diǎn) 實(shí)驗(yàn)學(xué)時(shí) 實(shí)驗(yàn)類型驗(yàn)證性指導(dǎo)教師 實(shí)驗(yàn)員 專業(yè)—班級(jí) 學(xué)號(hào)—姓名 年月日成績(jī):A教師該學(xué)生在實(shí)驗(yàn)中能發(fā)現(xiàn)問題,在教師的啟發(fā)下能解決問題。實(shí)驗(yàn)步驟和目標(biāo)明確,實(shí)驗(yàn)內(nèi)容豐富,實(shí)驗(yàn)結(jié)論有較好的見解和體會(huì),把所學(xué)知識(shí)在實(shí)驗(yàn)中進(jìn)行了檢驗(yàn)。評(píng)語一、實(shí)驗(yàn)?zāi)康募耙?、 掌握觸發(fā)器的基本理論知識(shí);2、 初步掌握觸發(fā)器的使用,包括創(chuàng)建、修改、刪除觸發(fā)器。二、實(shí)驗(yàn)原理與內(nèi)容1、 觸發(fā)器的概念觸發(fā)器是一種在使用UPDATE、INSERT或DELETE命令對(duì)指定表中的數(shù)據(jù)進(jìn)行修改時(shí),由數(shù)據(jù)庫管理系統(tǒng)自動(dòng)執(zhí)行的內(nèi)嵌程序,用來保證數(shù)據(jù)的一致性和完整性。觸發(fā)器與表緊密相連,可以看作是表定義的一部分。觸發(fā)器可以建立在一個(gè)用戶定義的表或視圖上,但不能建立在臨時(shí)表或系統(tǒng)表上。觸發(fā)器基于一個(gè)表創(chuàng)建,但可以操作多個(gè)表。觸發(fā)器作為一個(gè)獨(dú)立的單元被執(zhí)行,被看作一個(gè)事務(wù)。如果在執(zhí)行觸發(fā)器的過程中發(fā)生了錯(cuò)誤,則整個(gè)事務(wù)將會(huì)自動(dòng)回滾。觸發(fā)器是一種特殊的存儲(chǔ)過程,但它與存儲(chǔ)過程不同,存儲(chǔ)過程的存在獨(dú)立于表,而觸發(fā)器和表緊密結(jié)合;存儲(chǔ)過程可以通過存儲(chǔ)過程名稱而被直接調(diào)用,觸發(fā)器則是通過事件進(jìn)行觸發(fā)而自動(dòng)被執(zhí)行的。2、 觸發(fā)器的優(yōu)點(diǎn)觸發(fā)器是自動(dòng)執(zhí)行的。觸發(fā)器可以通過數(shù)據(jù)庫中的相關(guān)表進(jìn)行層疊更改,實(shí)現(xiàn)多個(gè)表之間數(shù)據(jù)的一致性和完整性。觸發(fā)器可以強(qiáng)制比用check約束定義的約束更為復(fù)雜的約束。觸發(fā)器可以引用其他表中的列。⑷一個(gè)表中的多個(gè)同類觸發(fā)器(INSERT、UPDATE、DELETE)運(yùn)行采取多個(gè)不同的對(duì)策,以相應(yīng)同一個(gè)修改語句。(5)觸發(fā)器可以評(píng)估數(shù)據(jù)修改前后的表狀態(tài),并根據(jù)其差異采取對(duì)策3、 觸發(fā)器的分類AFTER觸發(fā)器:又稱后觸發(fā)器。這種觸發(fā)器在數(shù)據(jù)變動(dòng)完成后才被觸發(fā)。可以對(duì)變動(dòng)的數(shù)據(jù)進(jìn)行檢查,如果發(fā)現(xiàn)錯(cuò)誤,將拒絕接受或回滾變動(dòng)的數(shù)據(jù)。只能在表上定義。在同一個(gè)數(shù)據(jù)表中可以創(chuàng)建多個(gè)after觸發(fā)器。默認(rèn)為after觸發(fā)器。for同after。INSTEADOF觸發(fā)器:前觸發(fā)器。其在數(shù)據(jù)變動(dòng)前被觸發(fā),并取代變動(dòng)數(shù)據(jù)的操作(update、insert、delete),而去執(zhí)行觸發(fā)器定義的操作??稍诒砘蛞晥D上定義,每個(gè)update、insert、delete語句最多可定義一個(gè)insteadof觸發(fā)器。4、 觸發(fā)器的組成事件:事件是指對(duì)數(shù)據(jù)庫的插入、刪除、修改等操作。觸發(fā)器在這些事件發(fā)生時(shí)將開始工作。條件:觸發(fā)器將測(cè)試條件是否成立。如果條件成立,就執(zhí)行相應(yīng)的動(dòng)作;否則什么也不做。動(dòng)作:如果條件滿足,則執(zhí)行這些動(dòng)作。5、 Inserted表和deleted表Deleted表用于存儲(chǔ)delete和update語句所影響的行的備份。在執(zhí)行delete或update語句時(shí),行從表中刪除,并轉(zhuǎn)移到deleted表中。Deleted表和基表通常沒有相同的行。Inserted表用于存儲(chǔ)insert和update語句所影響的行的備份。在一個(gè)插入或更新事務(wù)處理中,新建行被同時(shí)添加到inserted表和基表中。Inserted表中的行是基表中新行的備份。6、 在對(duì)具有觸發(fā)器的表(觸發(fā)器表)進(jìn)行操作時(shí),其操作過程如下:⑴執(zhí)行insert操作:插入到觸發(fā)器表中的新行被插入到inserted表中。⑵執(zhí)行delete操作:從觸發(fā)器表中刪除的行被插入到deleted表中。執(zhí)行update操作:先從觸發(fā)器表中刪除舊行,然后再插入新行。其中被刪除的舊行被插入到deleted表中,插入的新行被插入到inserted表中。7、 創(chuàng)建觸發(fā)器CREATETRIGGER<trigger_name>ON<table|view>[WITHENCRYPTION]{{{FOR|AFTER|INSTEADOF}{[DELETE][,][INSERT][,][UPDATE]}ASsql_statement[...n]}}Trigger_name:觸發(fā)器的名稱。Table|view:是在其上執(zhí)行觸發(fā)器的表或視圖。Withencryption:加密syscomments表中包含createtrigger語句文本的條目。After:指定觸發(fā)器只有在觸發(fā)sql語句中指定的所有操作都已成功執(zhí)行后才激發(fā)。如果僅指定for,貝U是默認(rèn)設(shè)置。不能在視圖上定義after觸發(fā)器。Insteadof:指定執(zhí)行觸發(fā)器而不是執(zhí)行觸發(fā)sql語句,從而替代觸發(fā)語句的操作。在表或視圖上,每個(gè)insert、update、delete語句最多可以定義一個(gè)insteadof觸發(fā)器。Delete、update、insert:是指定在表或視圖上執(zhí)行哪些數(shù)據(jù)修改語句時(shí)將激活觸發(fā)器的關(guān)鍵字。As:是觸發(fā)器要執(zhí)行的操作。Sql_statement:是觸發(fā)器的條件和操作。8、 修改觸發(fā)器alterTRIGGER<trigger_name>ON<table|view>[WITHENCRYPTION]{{{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}ASsqljstatement[?.?n]

}}9、 刪除觸發(fā)器Droptriggertrigger_name[, ]10、 嵌套觸發(fā)器■如果一個(gè)觸發(fā)器在執(zhí)行操作時(shí)引發(fā)了另一個(gè)觸發(fā)器,而這個(gè)觸發(fā)器又接著引發(fā)下一個(gè)觸發(fā)器時(shí),這些觸發(fā)器就是嵌套觸發(fā)器?!鲇|發(fā)器可嵌套至32層。三、實(shí)驗(yàn)軟硬件環(huán)境裝有MicrosoftSQLServer2008ManagementStudio的電腦□ feqiei-vhtreSr.air.e="李陰*運(yùn)行結(jié)果如右圖,我們可以看到,刪除student□ feqiei-vhtreSr.air.e="李陰*2、 修改觸發(fā)器createtriggert1onstudentInsteadofdeleteasdeletefromreportswheresno=(selectsnofromdeleted)3、 當(dāng)在student表中插入一個(gè)學(xué)生信息時(shí),假定該同學(xué)會(huì)選修所有課程,同時(shí)在reports表中插入該

同學(xué)的選修信息。其命令為CREATETRIGGERT2ONstudentAFTERINSERTASBEGINdeclare@xhvarchar(10)select@xh=snofrominserted--讀取插入學(xué)生的學(xué)號(hào)insertintoreports(sno,cno) --插入選課信息select@xh,cnofromcourseEND執(zhí)行上述命令后,執(zhí)行插入命令bno1Fsoi]bno1Fsoi]王建郢舅21□QI2"s'S"李明立IS□013£09女他DB24SD422DOS5S05IE003GSOG2CDQ37SG9d遛Z2002執(zhí)行select*fromstudent,運(yùn)行結(jié)果如下:如Cm5CW7516503C&lNULL75D9CMNULL8SOSCB3NULL9SMGWNULL10309CDS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論