第10章 數據庫_第1頁
第10章 數據庫_第2頁
第10章 數據庫_第3頁
第10章 數據庫_第4頁
第10章 數據庫_第5頁
已閱讀5頁,還剩55頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社第10章 觸發器 學習目標 本章要點上機練習 習 題電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社學習目標 觸發器是一個在修改指定表中的數據時強制執行的存儲過程。由于用戶無法繞過觸發器,因此觸發器成為了強制執行復雜業務邏輯,保證數據完整性的手段。我們前面學習過的約束只能實現簡單的數據完整性檢查,通過觸發器,我們可以實現非常復雜的數據完整性檢查。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社學習目標本章介紹了觸發器的概念,以及如何創建、使用和維護觸發器等內容,通過本章學習將

2、學會如何創建、刪除以及維護觸發器。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社本章要點 觸發器的概念創建和應用觸發器修改和刪除觸發器電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器的概念 SQL Server 2000提供了兩種主要機制來強制業務規則和數據完整性:即約束和觸發器。觸發器是一種特殊類型的存儲過程,它在指定的表中的數據發生變化時自動生效。喚醒調用觸發器以響應INSERT、UPDATE或DELETE語句。 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器的概念 觸發器可以查詢其它表,還可以包含復雜

3、的 Transact-SQL 語句。將觸發器和觸發它的語句作為可在觸發器內回滾的單個事務對待。如果檢測到嚴重錯誤,則整個事務即自動回滾。 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器的概念 基本概念 使用觸發器的優點 觸發器的分類 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社基本概念 觸發器實際就是一組代碼,當表格中某個數據發生變化時,觸發器就開始工作。它是控制與“插入”、“修改”、“刪除”等相關的數據庫的一種方法;同時,它也能用來維護數據的完整性。觸發器的概念比較觸發器與約束 電腦基礎實例上機系列叢書SQL Server數據庫應用

4、教程清華大學出版社觸發器的概念觸發器是特殊類型的存儲過程,它能在任何試圖改變表中由觸發器保護的數據時執行。觸發器主要通過事件進行觸發而被執行,觸發器不能直接調用執行,也不能被傳送和接受參數,而存儲過程可以通過存儲過程名直接調用。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器的概念觸發器與表或視圖名是不能分開的,觸發器定義在一個表或視圖名中,當在表或視圖名中執行插入(INSERT)、修改(UPDATE)和刪除(DELETE)操作時觸發器被觸發自動執行。當表或視圖名被刪除時與它關聯的觸發器也一同被刪除。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大

5、學出版社比較觸發器與約束 觸發器的主要好處在于它們可以包含使用Transact-SQL代碼的復雜處理邏輯。因此,觸發器可以支持約束的所有功能;但它在所給出的功能上并不總是最好的方法。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社比較觸發器與約束 實體完整性總應在最低級別上通過索引進行強制,這些索引或是PRIMARY KEY和UNIQUE約束的一部分,或是在約束之外獨立創建的。假設功能可以滿足應用程序的功能需求,域完整性應通過CHECK約束進行強制,而引用完整性(RI)則應通過FOREIGN KEY約束進行強制。電腦基礎實例上機系列叢書SQL Server數據庫應用教程

6、清華大學出版社比較觸發器與約束 在約束所支持的功能無法滿足應用程序的功能要求時,下列情況下觸發器就極為有用:除非 REFERENCES 子句定義了級聯引用操作,否則 FOREIGN KEY 約束只能以與另一列中的值完全匹配的值來驗證列值。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社比較觸發器與約束CHECK 約束只能根據邏輯表達式或同一表中的另一列來驗證列值。如果應用程序要求根據另一個表中的列驗證列值,則必須使用觸發器。約束只能通過標準的系統錯誤信息傳遞錯誤信息。如果應用程序要求使用自定義信息和較為復雜的錯誤處理,則必須使用觸發器。電腦基礎實例上機系列叢書SQL S

7、erver數據庫應用教程清華大學出版社比較觸發器與約束觸發器通過數據庫中的相關表可實現級聯更改,不過,通過級聯引用完整性約束可以更有效地執行這些更改。 觸發器可以禁止或回滾違反引用完整性的更改,從而取消所嘗試的數據修改。當更改外鍵且新值與主鍵不匹配時,此類觸發器就可能發生作用。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社比較觸發器與約束如果觸發器表上存在約束,則在INSTEAD OF觸發器執行后但在AFTER觸發器執行前檢查這些約束。如果約束破壞,則回滾INSTEAD OF觸發器操作并且不執行AFTER觸發器。電腦基礎實例上機系列叢書SQL Server數據庫應用教

8、程清華大學出版社使用觸發器的優點 觸發器有很多的優點,下面我們來一一講解。觸發器的優點如下。 觸發器可通過數據庫中的相關表實現級聯更改;不過,通過級聯引用完整性約束可以更有效地執行這些更改。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社使用觸發器的優點 觸發器可以強制比用CHECK約束定義的約束更為復雜的約束。 與CHECK約束不同,觸發器可以引用其它表中的列。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社使用觸發器的優點觸發器也可以評估數據修改前后的表狀態,并根據其差異采取對策。一個表中的多個同類觸發器(INSERT、UPDATE或DELE

9、TE)允許采取多個不同的對策以響應同一個修改語句。 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器的分類 SQL Server 2000提供了以下兩種觸發器選項,分別如下。執行INSTEAD OF觸發器代替通常的觸發動作。INSTEAD OF觸發器還可在帶有一個或多個基表的視圖上定義,而在這些視圖上這些觸發器可擴展視圖可支持的更新類型。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器的分類 在執行了INSERT、UPDATE或DELETE語句操作之后執行AFTER觸發器。指定AFTER與指定FOR相同,而后者是SQL Server早

10、期版本中唯一可使用的選項。AFTER觸發器只能在表上指定。 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社AFTER 觸發器和 INSTEAD OF 觸發器比較 功能AFTER 觸發器INSTEAD OF觸發器適用范圍表表和視圖每個表或視圖含觸發器數量每個觸發動作(UPDATE、DELETE 和 INSERT)含多個觸發器每個觸發動作(UPDATE、DELETE 和 INSERT)含一個觸發器級聯引用不應用任何限制在作為級聯引用完整性約束目標的表上限制應用。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社AFTER 觸發器和 INSTEAD O

11、F 觸發器比較功能AFTER 觸發器INSTEAD OF觸發器執行晚于: 約束處理聲明引用操作inserted 和 deleted 表的創建觸發動作早于: 約束處理代替:觸發動作晚于:inserted 和 deleted 表的創建電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社AFTER 觸發器和 INSTEAD OF 觸發器比較功能AFTER 觸發器INSTEAD OF觸發器執行順序可指定第一個和最后一個執行不可用在inserted 和 deleted 表中引用 text、ntext 和 image 列不允許允許電腦基礎實例上機系列叢書SQL Server數據庫應用教

12、程清華大學出版社觸發器的分類對于以上兩個選項,觸發器又可以分為INSERT觸發器、DELETE觸發器和UPDATE觸發器3類。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器的分類當向觸發器表中插入數據時,INSERT觸發器將觸發執行,新的記錄會增加到觸發器表和INSERTED表中;當刪除觸發器表中的數據時,DELETE觸發器將觸發執行,被刪除的記錄會存放到DELETED表中; 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器的分類當更新觸發器表中的數據時,相當于插入一條新記錄和刪除一條舊記錄,此時UPDATE觸發器將觸發執行,表中原

13、有的記錄存放到DELETED表中,修改后的記錄插入到INSERTED表中。 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器的分類其中,INSERTED表和DELETED表是兩個邏輯表,由系統來維護,不允許用戶直接對這兩個表進行修改。它們存放于內存中,不存放在數據庫中。這兩個表的結構總是與被該觸發器作用的表的結構相同。這兩個表主要用于在觸發器以下操作中使用。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器的分類擴展表間引用完整性。在以視圖為基礎的基表中插入或更新數據。檢查錯誤并基于錯誤采取行動。找到數據修改前后表狀態的差異,并基于此差

14、異采取行動。 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器的分類具體來看:DELETED表用于存儲DELETE和UPDATE語句所影響的行的復本。在執行DELETE或UPDATE語句時,行從觸發器表中刪除,并傳輸到DELETED表中。DELETED 表和觸發器表通常沒有相同的行。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器的分類INSERTED表用于存儲INSERT和UPDATE語句所影響的行的副本。在一個插入或更新事務處理中,新建行被同時添加到INSERTED表和觸發器表中。INSERTED表中的行是觸發器表中新行的副本。電

15、腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器的分類更新事務類似于在刪除之后執行插入;首先舊行被復制到DELETED表中,然后新行被復制到觸發器表和INSERTED表中。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社創建和應用觸發器 對觸發器進行了解后,我們就可以開始創建以及應用觸發器了。創建觸發器 查看觸發器的定義信息 禁用或啟用觸發器 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社創建觸發器 下面講解創建觸發器的方法。用CREATE TRIGGER命令創建AFTER觸發器 用CREATE TRIGGER命令創

16、建INSTEADE OF觸發器 使用企業管理器創建觸發器 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社用CREATE TRIGGER命令創建AFTER觸發器 常用語法格式:CREATE TRIGGER觸發器名ON 表名或視圖名FOR DELETE,INSERT,UPDATEAS 觸發器將要執行的SQL語句電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社用CREATE TRIGGER命令創建AFTER觸發器【例10-1】 在readers(讀者表)中創建一個名為“TrReaderDelete”的觸發器,當要刪除讀者時,檢查borrow(借書表)

17、中該書是否已經被借出,如果是則給出提示信息不允許刪除該信息(光盤:源文件第10章例10-1)。 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社用CREATE TRIGGER命令創建INSTEADE OF觸發器 常用語法格式:CREATE TRIGGER 觸發器名ON 表名或視圖名INSTEADE OF DELETE,INSERT,UPDATEAS 觸發器將要執行的SQL語句電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社用CREATE TRIGGER命令創建INSTEADE OF觸發器【例10-2】 在Books中創建一個名為“reminder

18、”的觸發器,當要插入新的讀者記錄時,觸發器被觸發,然后使用觸發語句來取代這個插入操作(光盤:源文件第10章例10-2)。當執行這條插入新記錄語句的時候,被printhello所取代,最終并沒有被執行。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社INSTEADE OF觸發器 INSTEADE OF 觸發器 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社使用企業管理器創建觸發器 下面講解在企業管理器中創建觸發器的方法。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社查看觸發器的定義信息 可以使用企業管理器和查詢分析器來查

19、看觸發器。使用企業管理器來查看觸發器 使用查詢分析器來察看觸發器 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社使用企業管理器來查看觸發器 查看觸發器 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社使用查詢分析器來察看觸發器 查看觸發器 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社禁用或啟用觸發器 語法:ALTER TABLE 表名 ENABLE | DISABLE TRIGGER ALL | 觸發器名 , n 在使用觸發器的時候,可以采用修改表的方式來啟用或禁用觸發器。電腦基礎實例上機系列叢書SQL Server

20、數據庫應用教程清華大學出版社禁用或啟用觸發器【例10-3】 啟用或禁用readers(讀者表)中“TrReaderDelete”觸發器(光盤:源文件第10章例10-3)。-禁止-alter table readers disable trigger TrReaderDelete-啟用-alter table readers enable trigger TrReaderDelete電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社修改和刪除觸發器 修改觸發器 刪除觸發器 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社修改觸發器 用企業管理器和Tr

21、ansaction-SQL命令,可以修改觸發器。用“企業管理器”修改觸發器正文 用ALTER TRIGGER命令修改觸發器正文 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社用“企業管理器”修改觸發器正文用企業管理器修改觸發器正文的操作步驟與創建觸發器相似,只需在“名稱”下拉列表框中選擇要修改的觸發器即可。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社觸發器屬性 觸發器屬性 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社用ALTER TRIGGER命令修改觸發器正文 命令格式為:ALTER TRIGGER 觸發器名O

22、N 表名或視圖名FOR DELETE,INSERT,UPDATEAS 觸發器將要執行的SQL語句電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社刪除觸發器 用戶可以刪除不再需要的觸發器,觸發器所在的表以及表中的數據不受影響。如果刪除表,則表中所有的觸發器將被自動刪除。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社刪除觸發器 一般用 DROP TRIGGER 刪除觸發器,除此之外,也可用“企業管理器”刪除觸發器的操作步驟與修改觸發器相似, 在名稱框中選擇要刪除的觸發器后,單擊按鈕,即可刪除該觸發器。 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社修改觸發器 修改觸發器 電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社上 機 練 習 為Library數據庫創建觸發器:在借書時,將“Books”表的“是否借出”列置成1;在還書時,將“Books”的“是否借出”列置成0(光盤:源文件第10章上機練習)。電腦基礎實例上機系列叢書SQL Server數據庫應用教程清華大學出版社上 機 練 習分析:在讀者借書時,將在Borrow表中插入記錄;在還書時,將在Borrow表中刪除該記錄。

溫馨提示

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

評論

0/150

提交評論