在exam數(shù)據(jù)庫中應(yīng)用觸發(fā)器_第1頁
在exam數(shù)據(jù)庫中應(yīng)用觸發(fā)器_第2頁
在exam數(shù)據(jù)庫中應(yīng)用觸發(fā)器_第3頁
在exam數(shù)據(jù)庫中應(yīng)用觸發(fā)器_第4頁
在exam數(shù)據(jù)庫中應(yīng)用觸發(fā)器_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、15.2 應(yīng)用觸發(fā)器應(yīng)用觸發(fā)器教學(xué)任務(wù):教學(xué)任務(wù):在在Exam數(shù)據(jù)庫中創(chuàng)建以下觸發(fā)器數(shù)據(jù)庫中創(chuàng)建以下觸發(fā)器1. 創(chuàng)建update后觸發(fā)器ExamDatabaseTri,提醒Exam數(shù)據(jù)庫中題庫表中被修改的記錄條數(shù);2. 定義一個delete后觸發(fā)器TestUserTri,實現(xiàn)當(dāng)刪除某個學(xué)生信息后,就級聯(lián)刪除該學(xué)生相關(guān)的成績記錄;(deleted表應(yīng)用)15.2 應(yīng)用觸發(fā)器應(yīng)用觸發(fā)器教學(xué)任務(wù):教學(xué)任務(wù):在在exam數(shù)據(jù)庫中創(chuàng)建以下觸發(fā)器數(shù)據(jù)庫中創(chuàng)建以下觸發(fā)器3. 定義一個Insert后觸發(fā)器SubjectTri,實現(xiàn)當(dāng)向ExamSubject表中添加記錄時,把新的課程考試安排信息同時插入到考試設(shè)

2、置表ExamTest中,以便及時安排課程考試信息;(inserted表應(yīng)用)4. 定義一個替代觸發(fā)器AdminTri,不允許對管理員表Admin表的UserName列進行任何修改操作。(update()函數(shù)應(yīng)用)15.2 應(yīng)用觸發(fā)器應(yīng)用觸發(fā)器知識點:知識點:創(chuàng)建觸發(fā)器可以使用Create Trigger語句來完成對觸發(fā)器的創(chuàng)建操作,創(chuàng)建DML觸發(fā)器的基本語法如下:Create Trigger trigger_name On table | view With Encryption For | After | Instead Of Insert , Update , Delete With Ap

3、pend Not For Replication AsSql語句系列15.2 應(yīng)用觸發(fā)器應(yīng)用觸發(fā)器知識點:知識點:創(chuàng)建觸發(fā)器需要注意的是:1) Create Trigger語句必須是一個批處理的第一條語句。2) 創(chuàng)建DML觸發(fā)器的權(quán)限默認分配給表的所有者,且不能將該權(quán)限轉(zhuǎn)給其他用戶。3) 一個觸發(fā)器只能創(chuàng)建在一個表上;一個表可以有一個替代觸發(fā)器和多個后觸發(fā)器。4) 雖然DML觸發(fā)器可以引用當(dāng)前數(shù)據(jù)庫以外的對象,但只能在當(dāng)前數(shù)據(jù)庫中創(chuàng)建DML觸發(fā)器。15.2 應(yīng)用觸發(fā)器應(yīng)用觸發(fā)器知識點:知識點:創(chuàng)建觸發(fā)器需要注意的是:5) 觸發(fā)器的定義語句中不能有任何用Create創(chuàng)建、用Alter修改數(shù)據(jù)庫或

4、各種對象的語句,不允許使用任何的Drop語句。6) Truncate Table雖然在功能上與Delete類似,但是由于Truncate刪除記錄時不被記入事務(wù)日志,所以該語句不能激活delete刪除操作的觸發(fā)器。7) Writetext命令不會觸發(fā)Insert或者Update觸發(fā)器運行。觸發(fā)器作為一種數(shù)據(jù)庫對象,在syscomments系統(tǒng)表中存儲其完整的定義信息,在sysobjects系統(tǒng)表中有該對象的記錄。sysobjects表中name列對應(yīng)對象名,type或xtype列對象對象類型,觸發(fā)器用“TR”表示。15.2 應(yīng)用觸發(fā)器應(yīng)用觸發(fā)器配套任務(wù):配套任務(wù):在在Library數(shù)據(jù)庫中創(chuàng)建以

5、下觸發(fā)器數(shù)據(jù)庫中創(chuàng)建以下觸發(fā)器1.創(chuàng)建一個update后觸發(fā)的觸發(fā)器BookTri,顯示書籍Book信息表中被修改記錄的條數(shù)。2.定義一個Delete觸發(fā)器UserTri,實現(xiàn)當(dāng)刪除某個讀者信息后,就刪除該讀者的借閱記錄。(級聯(lián)刪除操作)15.2 應(yīng)用觸發(fā)器應(yīng)用觸發(fā)器配套任務(wù):配套任務(wù):在在library數(shù)據(jù)庫中創(chuàng)建以下觸發(fā)器數(shù)據(jù)庫中創(chuàng)建以下觸發(fā)器3.定義一個Insert觸發(fā)器BookCateTri,實現(xiàn)當(dāng)向Book表中添加記錄時,把新的圖書類別插入到圖書類別表BookCategory中。4.定義一個Update觸發(fā)器UserCateTri,更新讀者類別表UserCate中讀者類別名稱Cate

6、Name時,把讀者表UserTb中相應(yīng)的讀者類別也進行修改。15.2 應(yīng)用觸發(fā)器應(yīng)用觸發(fā)器配套任務(wù):配套任務(wù):在在Library數(shù)據(jù)庫中創(chuàng)建以下觸發(fā)器數(shù)據(jù)庫中創(chuàng)建以下觸發(fā)器5.定義一個insert觸發(fā)器LendUserTbTri,當(dāng)發(fā)生讀者借閱書籍的情況,除了在Lending表中記錄此借閱信息,同時讀者表UserTb中借書數(shù)量UserBkNum也進行修改。6. 定義一個替代觸發(fā)器AdminTri,不允許對“AdminTb”表進行修改、刪除。拓展訓(xùn)練拓展訓(xùn)練1.因為在“Library”數(shù)據(jù)庫中無法通過約束來實現(xiàn)Lending/Book/UserTb三個表之間的借書業(yè)務(wù)規(guī)則,請設(shè)計一個插入型觸發(fā)器

7、,要求是:當(dāng)有一個讀者借閱一本書籍的時候,系統(tǒng)自動偵測被借書籍是否在庫,若不在則提示“該書已不在庫,不能借出!”;若該書在庫,則允許讀者借出,且同時修改Book表中該書的狀態(tài)及UserTb表中用戶借書總數(shù),以達到數(shù)據(jù)的一致性。2. 進一步修改以上觸發(fā)器功能,增加對用戶借書總數(shù)的判斷,因為每位讀者都有相應(yīng)的可借書數(shù)量的最高限度。約束與觸發(fā)器約束與觸發(fā)器對比約束與觸發(fā)器,二者應(yīng)該各盡所能:約束和DML觸發(fā)器在特殊情況下各有優(yōu)點。DML觸發(fā)器的主要優(yōu)點在于它們可以包含使用Transact-SQL代碼的復(fù)雜處理邏輯。因此,DML觸發(fā)器可以支持約束的所有功能;但DML觸發(fā)器對于給定的功能并不總是最好的方

8、法。當(dāng)約束支持的功能無法滿足應(yīng)用程序的功能要求時,DML觸發(fā)器非常有用。約束與觸發(fā)器約束與觸發(fā)器對比約束與觸發(fā)器,二者應(yīng)該各盡所能,二者的區(qū)別主要是:1)除非References子句定義了級聯(lián)引用操作,否則Foreign Key約束只能用與另一列中的值完全匹配的值來驗證列值。2) 約束只能通過標(biāo)準化的系統(tǒng)錯誤來傳遞錯誤信息。如果應(yīng)用程序需要(或能受益于)使用自定義消息和較為復(fù)雜的錯誤處理,則必須用觸發(fā)器。約束與觸發(fā)器約束與觸發(fā)器3) DML觸發(fā)器可以將更改通過級聯(lián)方式傳播給數(shù)據(jù)庫中的相關(guān)表;不過,通過級聯(lián)引用完整性約束可以更有效地執(zhí)行這些更改。4) DML觸發(fā)器可以禁止或回滾違反引用完整性的更改,從而取消所嘗試的數(shù)據(jù)修改。當(dāng)更改外鍵且新值與其主鍵不匹配時,這樣的觸發(fā)器將生效。但是, Foreign Key約束通常用于此目的。5) 如果觸發(fā)器表上存在約束,則在Instead Of觸發(fā)器執(zhí)行后但在After觸發(fā)器執(zhí)行前檢查這些約束。如果違反了約束,則回滾Instead Of觸發(fā)器操作并且不執(zhí)行After觸發(fā)器。小小 結(jié)結(jié)1.觸發(fā)器是一種特殊的存儲過程,它與表相連,當(dāng)用戶修改表中的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論