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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、置表ExamTest中,以便及時安排課程考試信息;(inserted表應用)4. 定義一個替代觸發(fā)器AdminTri,不允許對管理員表Admin表的UserName列進行任何修改操作。(update()函數應用)15.2 應用觸發(fā)器應用觸發(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 應用觸發(fā)器應用觸發(fā)器知識點:知識點:創(chuàng)建觸發(fā)器需要注意的是:1) Create Trigger語句必須是一個批處理的第一條語句。2) 創(chuàng)建DML觸發(fā)器的權限默認分配給表的所有者,且不能將該權限轉給其他用戶。3) 一個觸發(fā)器只能創(chuàng)建在一個表上;一個表可以有一個替代觸發(fā)器和多個后觸發(fā)器。4) 雖然DML觸發(fā)器可以引用當前數據庫以外的對象,但只能在當前數據庫中創(chuàng)建DML觸發(fā)器。15.2 應用觸發(fā)器應用觸發(fā)器知識點:知識點:創(chuàng)建觸發(fā)器需要注意的是:5) 觸發(fā)器的定義語句中不能有任何用Create創(chuàng)建、用Alter修改數據庫或

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論