第08章存儲(chǔ)過(guò)程和觸發(fā)器_第1頁(yè)
第08章存儲(chǔ)過(guò)程和觸發(fā)器_第2頁(yè)
第08章存儲(chǔ)過(guò)程和觸發(fā)器_第3頁(yè)
第08章存儲(chǔ)過(guò)程和觸發(fā)器_第4頁(yè)
第08章存儲(chǔ)過(guò)程和觸發(fā)器_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、SQL Server 2005 SQL Server 2005 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)應(yīng)用與開發(fā)應(yīng)用與開發(fā)清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)n觸發(fā)器(觸發(fā)器(Trigger)是一種響應(yīng)數(shù)據(jù)操作語(yǔ))是一種響應(yīng)數(shù)據(jù)操作語(yǔ)言(言(DML)事件或數(shù)據(jù)定義語(yǔ)言()事件或數(shù)據(jù)定義語(yǔ)言(DDL)事件而執(zhí)行的特殊類型的存儲(chǔ)過(guò)程,是在事件而執(zhí)行的特殊類型的存儲(chǔ)過(guò)程,是在用戶對(duì)某一表中的數(shù)據(jù)進(jìn)行用戶對(duì)某一表中的數(shù)據(jù)進(jìn)行UPDATE、INSERT和和DELETE操作時(shí)被觸發(fā)執(zhí)行的操作時(shí)被觸發(fā)執(zhí)行的一段程序。一段程序。n觸發(fā)器有助于強(qiáng)制引用完整性,以便在添觸發(fā)器有助于強(qiáng)制引用完整性,以

2、便在添加、更新或刪除表中的行時(shí)保留表之間已加、更新或刪除表中的行時(shí)保留表之間已定義的關(guān)系。定義的關(guān)系。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.3.1 觸發(fā)器的作用觸發(fā)器的作用觸發(fā)器可以實(shí)現(xiàn)由主鍵和外鍵所不能保證的觸發(fā)器可以實(shí)現(xiàn)由主鍵和外鍵所不能保證的復(fù)雜的參照完整性和數(shù)據(jù)一致性。復(fù)雜的參照完整性和數(shù)據(jù)一致性。(1)觸發(fā)器的主要作用。)觸發(fā)器的主要作用。n觸發(fā)器可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行級(jí)聯(lián)修改。觸發(fā)器可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行級(jí)聯(lián)修改。n實(shí)現(xiàn)比實(shí)現(xiàn)比CHECK約束更為復(fù)雜的限制。約束更為復(fù)雜的限制。n強(qiáng)制表的修改要合乎業(yè)務(wù)規(guī)則。強(qiáng)制表的修改要合乎業(yè)務(wù)規(guī)則。清華大學(xué)出版社.

3、SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.3.1 觸發(fā)器的作用觸發(fā)器的作用(2)使用觸發(fā)器的優(yōu)點(diǎn)。)使用觸發(fā)器的優(yōu)點(diǎn)。 n觸發(fā)器可通過(guò)數(shù)據(jù)庫(kù)中的相關(guān)表實(shí)現(xiàn)級(jí)聯(lián)更改。觸發(fā)器可通過(guò)數(shù)據(jù)庫(kù)中的相關(guān)表實(shí)現(xiàn)級(jí)聯(lián)更改。n觸發(fā)器可以強(qiáng)制比用觸發(fā)器可以強(qiáng)制比用CHECK約束定義的約束約束定義的約束更為復(fù)雜的約束。更為復(fù)雜的約束。 n觸發(fā)器也可以監(jiān)測(cè)數(shù)據(jù)修改前后的表狀態(tài),并觸發(fā)器也可以監(jiān)測(cè)數(shù)據(jù)修改前后的表狀態(tài),并根據(jù)其差異采取對(duì)策。根據(jù)其差異采取對(duì)策。n一個(gè)表中的多個(gè)同類觸發(fā)器(一個(gè)表中的多個(gè)同類觸發(fā)器(INSERT、UPDATE 或或 DELETE)允許采取多個(gè)不同的)允許采取多個(gè)不同的對(duì)

4、策以響應(yīng)同一個(gè)修改語(yǔ)句。對(duì)策以響應(yīng)同一個(gè)修改語(yǔ)句。 清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.3.2 觸發(fā)器的分類觸發(fā)器的分類兩種類型的觸發(fā)器:兩種類型的觸發(fā)器:DML觸發(fā)器和觸發(fā)器和DDL觸發(fā)器。觸發(fā)器。1. DML觸發(fā)器觸發(fā)器nDML觸發(fā)器是在執(zhí)行觸發(fā)器是在執(zhí)行INSERT、UPDATE或或DELETE語(yǔ)語(yǔ)句時(shí)被激活的觸發(fā)器。句時(shí)被激活的觸發(fā)器。nDML觸發(fā)器又分為觸發(fā)器又分為AFTER和和INSTEAD OF兩種觸發(fā)器兩種觸發(fā)器:nAFTER 觸發(fā)器是在激活它的語(yǔ)句執(zhí)行成功后才激活觸發(fā)器是在激活它的語(yǔ)句執(zhí)行成功后才激活.nINSTEAD OF觸發(fā)器的

5、激活將替代相應(yīng)的觸發(fā)語(yǔ)句。觸發(fā)器的激活將替代相應(yīng)的觸發(fā)語(yǔ)句。n當(dāng)數(shù)據(jù)庫(kù)中發(fā)生數(shù)據(jù)操作語(yǔ)言(當(dāng)數(shù)據(jù)庫(kù)中發(fā)生數(shù)據(jù)操作語(yǔ)言(DML)事件時(shí)將調(diào)用)事件時(shí)將調(diào)用 DML 觸發(fā)器。觸發(fā)器。DML 觸發(fā)器可以查詢其他表,還可以包觸發(fā)器可以查詢其他表,還可以包含復(fù)雜的含復(fù)雜的 Transact-SQL 語(yǔ)句。將觸發(fā)器和觸發(fā)它的語(yǔ)句語(yǔ)句。將觸發(fā)器和觸發(fā)它的語(yǔ)句作為可在觸發(fā)器內(nèi)回滾的單個(gè)事務(wù)對(duì)待。如果檢測(cè)到錯(cuò)作為可在觸發(fā)器內(nèi)回滾的單個(gè)事務(wù)對(duì)待。如果檢測(cè)到錯(cuò)誤誤,則整個(gè)事務(wù)即自動(dòng)回滾。則整個(gè)事務(wù)即自動(dòng)回滾。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.3.2 觸發(fā)器的分類觸發(fā)器的

6、分類。1. DML觸發(fā)器觸發(fā)器: DML 觸發(fā)器通常用于以下場(chǎng)合:觸發(fā)器通常用于以下場(chǎng)合: nDML 觸發(fā)器可通過(guò)數(shù)據(jù)庫(kù)中的相關(guān)表實(shí)現(xiàn)級(jí)聯(lián)更改。觸發(fā)器可通過(guò)數(shù)據(jù)庫(kù)中的相關(guān)表實(shí)現(xiàn)級(jí)聯(lián)更改。nDML 觸發(fā)器可以防止惡意或錯(cuò)誤的觸發(fā)器可以防止惡意或錯(cuò)誤的 INSERT、UPDATE 以及以及 DELETE 操作,并強(qiáng)制執(zhí)行比操作,并強(qiáng)制執(zhí)行比 CHECK 約束定義的約束定義的限制更為復(fù)雜的其他限制。限制更為復(fù)雜的其他限制。 n與與 CHECK 約束不同,約束不同,DML 觸發(fā)器可引用其他表中的列。觸發(fā)器可引用其他表中的列。nDML 觸發(fā)器可以評(píng)估數(shù)據(jù)修改前后表的狀態(tài),并根據(jù)該差觸發(fā)器可以評(píng)估數(shù)據(jù)修改

7、前后表的狀態(tài),并根據(jù)該差異采取措施。異采取措施。n一個(gè)表中的多個(gè)同類一個(gè)表中的多個(gè)同類DML觸發(fā)器允許采取多個(gè)不同的操作觸發(fā)器允許采取多個(gè)不同的操作來(lái)響應(yīng)同一個(gè)修改語(yǔ)句。來(lái)響應(yīng)同一個(gè)修改語(yǔ)句。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.3.2 觸發(fā)器的分類觸發(fā)器的分類。2. DDL觸發(fā)器觸發(fā)器DDL觸發(fā)器是在執(zhí)行觸發(fā)器是在執(zhí)行CREATE、ALTER和和DROP語(yǔ)語(yǔ)句時(shí)被激活的觸發(fā)器,是由數(shù)據(jù)定義語(yǔ)言引起的。句時(shí)被激活的觸發(fā)器,是由數(shù)據(jù)定義語(yǔ)言引起的。如果要執(zhí)行以下操作,可以使用如果要執(zhí)行以下操作,可以使用DDL觸發(fā)器:觸發(fā)器: n要防止對(duì)數(shù)據(jù)庫(kù)架構(gòu)進(jìn)行某些

8、更改。要防止對(duì)數(shù)據(jù)庫(kù)架構(gòu)進(jìn)行某些更改。n希望數(shù)據(jù)庫(kù)中發(fā)生某種情況以響應(yīng)數(shù)據(jù)庫(kù)架構(gòu)希望數(shù)據(jù)庫(kù)中發(fā)生某種情況以響應(yīng)數(shù)據(jù)庫(kù)架構(gòu)中的更改。中的更改。 n要記錄數(shù)據(jù)庫(kù)架構(gòu)中的更改或事件。要記錄數(shù)據(jù)庫(kù)架構(gòu)中的更改或事件。n僅在運(yùn)行觸發(fā)僅在運(yùn)行觸發(fā) DDL 觸發(fā)器的觸發(fā)器的 DDL 語(yǔ)句后,語(yǔ)句后,DDL 觸發(fā)器才會(huì)激發(fā)。觸發(fā)器才會(huì)激發(fā)。DDL 觸發(fā)器無(wú)法作為觸發(fā)器無(wú)法作為 INSTEAD OF 觸發(fā)器使用。觸發(fā)器使用。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.3.3 觸發(fā)器的工作原理觸發(fā)器的工作原理n在觸發(fā)器的執(zhí)行過(guò)程中,在觸發(fā)器的執(zhí)行過(guò)程中,SQL Server為每

9、個(gè)觸發(fā)器創(chuàng)建和為每個(gè)觸發(fā)器創(chuàng)建和管理兩個(gè)特殊的表,一個(gè)是插入表管理兩個(gè)特殊的表,一個(gè)是插入表inserted表,一個(gè)是刪除表,一個(gè)是刪除表表deleted表。這兩個(gè)表建在數(shù)據(jù)庫(kù)服務(wù)器的內(nèi)存中,與觸表。這兩個(gè)表建在數(shù)據(jù)庫(kù)服務(wù)器的內(nèi)存中,與觸發(fā)器所在數(shù)據(jù)表的結(jié)構(gòu)是完全一致。發(fā)器所在數(shù)據(jù)表的結(jié)構(gòu)是完全一致。n當(dāng)由當(dāng)由INSERT或或UPDATE語(yǔ)句激活相應(yīng)觸發(fā)器之后,所有語(yǔ)句激活相應(yīng)觸發(fā)器之后,所有被添加或被更新的記錄都被存儲(chǔ)到被添加或被更新的記錄都被存儲(chǔ)到inserted表。當(dāng)由表。當(dāng)由DELETE或或UPDATE語(yǔ)句激活相應(yīng)觸發(fā)器之后,所有被刪語(yǔ)句激活相應(yīng)觸發(fā)器之后,所有被刪除的記錄都被送到除的

10、記錄都被送到deleted表。表。n在觸發(fā)器的執(zhí)行過(guò)程中,可以讀取這兩個(gè)表中的內(nèi)容,但在觸發(fā)器的執(zhí)行過(guò)程中,可以讀取這兩個(gè)表中的內(nèi)容,但不能修改它們。當(dāng)觸發(fā)器的工作完成之后,這兩個(gè)表也將不能修改它們。當(dāng)觸發(fā)器的工作完成之后,這兩個(gè)表也將從內(nèi)存中刪除。從內(nèi)存中刪除。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.3.4 創(chuàng)建觸發(fā)器前應(yīng)該注意的問(wèn)題創(chuàng)建觸發(fā)器前應(yīng)該注意的問(wèn)題在創(chuàng)建觸發(fā)器前,需要注意以下一些問(wèn)題:在創(chuàng)建觸發(fā)器前,需要注意以下一些問(wèn)題:nCREATE TRIGGER 語(yǔ)句必須是批處理中的第一個(gè)語(yǔ)句,語(yǔ)句必須是批處理中的第一個(gè)語(yǔ)句,而且只能用于一個(gè)表或視圖

11、。而且只能用于一個(gè)表或視圖。n創(chuàng)建觸發(fā)器的權(quán)限默認(rèn)分配給表的所有者,且不能將該權(quán)創(chuàng)建觸發(fā)器的權(quán)限默認(rèn)分配給表的所有者,且不能將該權(quán)限轉(zhuǎn)給其他用戶。限轉(zhuǎn)給其他用戶。n觸發(fā)器可以引用當(dāng)前數(shù)據(jù)庫(kù)以外的對(duì)象,但只能在當(dāng)前數(shù)觸發(fā)器可以引用當(dāng)前數(shù)據(jù)庫(kù)以外的對(duì)象,但只能在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建觸發(fā)器。據(jù)庫(kù)中創(chuàng)建觸發(fā)器。n不能在臨時(shí)表或系統(tǒng)表上創(chuàng)建觸發(fā)器,但是觸發(fā)器可以引不能在臨時(shí)表或系統(tǒng)表上創(chuàng)建觸發(fā)器,但是觸發(fā)器可以引用臨時(shí)表。不應(yīng)引用系統(tǒng)表,而應(yīng)使用信息架構(gòu)視圖。用臨時(shí)表。不應(yīng)引用系統(tǒng)表,而應(yīng)使用信息架構(gòu)視圖。n在含有用在含有用 DELETE或或UPDATE操作定義的外鍵的表中,不操作定義的外鍵的表中,不能定義

12、能定義INSTEAD OF和和 INSTEAD OF UPDATE觸發(fā)器。觸發(fā)器。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.4.1 創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)器可以通過(guò)創(chuàng)建觸發(fā)器可以通過(guò)SQL Server Management Studio和和CREATE TRIGGER語(yǔ)句兩種方法。語(yǔ)句兩種方法。創(chuàng)建觸發(fā)器時(shí)需要指定如下的選項(xiàng):創(chuàng)建觸發(fā)器時(shí)需要指定如下的選項(xiàng): n觸發(fā)器名稱和需要定義觸發(fā)器的表。觸發(fā)器名稱和需要定義觸發(fā)器的表。n觸發(fā)器將何時(shí)激發(fā)。觸發(fā)器將何時(shí)激發(fā)。n激活觸發(fā)器的數(shù)據(jù)修改語(yǔ)句。有效選項(xiàng)為激活觸發(fā)器的數(shù)據(jù)修改語(yǔ)句。有效選項(xiàng)為INSERT、

13、UPDATE或或 DELETE。多個(gè)數(shù)據(jù)修。多個(gè)數(shù)據(jù)修改語(yǔ)句可激活同一個(gè)觸發(fā)器。改語(yǔ)句可激活同一個(gè)觸發(fā)器。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.4.1 創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)器1. 在在SQL Server Management Studio中創(chuàng)建觸發(fā)器中創(chuàng)建觸發(fā)器(1)啟動(dòng))啟動(dòng)SQL Server Management Studio,在,在“對(duì)象資源管理器對(duì)象資源管理器”中展開中展開“數(shù)據(jù)數(shù)據(jù)庫(kù)庫(kù)”|teaching|“表表” 。(2)選擇要?jiǎng)?chuàng)建觸發(fā)器的表)選擇要?jiǎng)?chuàng)建觸發(fā)器的表student并展開。右單并展開。右單“觸發(fā)器觸發(fā)器”節(jié)點(diǎn),在彈出的快捷菜單

14、中選擇節(jié)點(diǎn),在彈出的快捷菜單中選擇“新新建觸發(fā)器建觸發(fā)器”命令。命令。(3)此時(shí)彈出如圖)此時(shí)彈出如圖8.4所示的新建觸發(fā)器編輯窗口,所示的新建觸發(fā)器編輯窗口,其中包含觸發(fā)器模板,用戶可以參照模板在其中其中包含觸發(fā)器模板,用戶可以參照模板在其中輸入觸發(fā)器的輸入觸發(fā)器的Transact-SQL語(yǔ)句。語(yǔ)句。(4)單擊工具欄中的)單擊工具欄中的“!”執(zhí)行按鈕,將觸發(fā)器執(zhí)行按鈕,將觸發(fā)器保存到數(shù)據(jù)庫(kù)中。保存到數(shù)據(jù)庫(kù)中。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.4.1 創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)器2. 使用使用CREATE TRIGGER語(yǔ)句創(chuàng)建觸發(fā)器語(yǔ)句創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)

15、器的語(yǔ)法格式如下:創(chuàng)建觸發(fā)器的語(yǔ)法格式如下:CREATE TRIGGER trigger_name ON table | view WITH ENCRYPTION FOR | AFTER | INSTEAD OF INSERT , UPDATE , DELETE AS sql_statament ,n 例例8.8 為為student表創(chuàng)建一個(gè)觸發(fā)器,用來(lái)禁止表創(chuàng)建一個(gè)觸發(fā)器,用來(lái)禁止更新學(xué)號(hào)字段的值。更新學(xué)號(hào)字段的值。程序代碼如下程序代碼如下:CREATE TRIGGER update_s_tr ON student AFTER UPDATEASIF UPDATE(studentno) BEG

16、IN RAISERROR(不能修改學(xué)號(hào)不能修改學(xué)號(hào),16,2) ROLLBACKEND此時(shí),若有更新語(yǔ)句如下:此時(shí),若有更新語(yǔ)句如下:UPDATE student SET studentno=0837221508WHERE studentno=0937221508則提示則提示“不能修改學(xué)號(hào)不能修改學(xué)號(hào)”, 更新語(yǔ)句得不更新語(yǔ)句得不到執(zhí)行。到執(zhí)行。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.4.1 創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)器例例8.9 為為course表創(chuàng)建一個(gè)觸發(fā)器,用來(lái)防止用戶刪除任何表創(chuàng)建一個(gè)觸發(fā)器,用來(lái)防止用戶刪除任何必修課程的課程記錄。必修課程的課程記錄。

17、程序代碼如下程序代碼如下:CREATE TRIGGER delete_c_tr ON courseINSTEAD OF DELETE ASIF EXISTS ( SELECT * FROM course WHERE type=必修必修 ) BEGIN RAISERROR(不能刪除必修課程不能刪除必修課程,16,2) ROLLBACK END此時(shí),若刪除新語(yǔ)句如下:此時(shí),若刪除新語(yǔ)句如下:DELETE FORM course WHERE type=必修必修則提示則提示“不能刪除必修課程不能刪除必修課程”,刪除語(yǔ)句得不到執(zhí),刪除語(yǔ)句得不到執(zhí)行。行。清華大學(xué)出版社. SQL Server 2005數(shù)

18、據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.4.1 創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)器例例8.10 為為score表創(chuàng)建一個(gè)觸發(fā)器,用來(lái)防止用戶對(duì)表創(chuàng)建一個(gè)觸發(fā)器,用來(lái)防止用戶對(duì)score表表中的數(shù)據(jù)進(jìn)行任何修改。中的數(shù)據(jù)進(jìn)行任何修改。程序代碼如下程序代碼如下:CREATE TRIGGER update_sc_tr ON scoreINSTEAD OF UPDATEASRAISERROR(不能修改成績(jī)表中的數(shù)據(jù)不能修改成績(jī)表中的數(shù)據(jù),16,2)此時(shí),若有更新語(yǔ)句如下此時(shí),若有更新語(yǔ)句如下:UPDATE score SET final=60則提示則提示“不能修改成績(jī)表中的數(shù)據(jù)不能修改成績(jī)表中的數(shù)據(jù)”,更新語(yǔ)句得不到執(zhí),更新

19、語(yǔ)句得不到執(zhí)行。行。同一個(gè)觸發(fā)器。同一個(gè)觸發(fā)器。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.4.2 修改觸發(fā)器修改觸發(fā)器1. 使用使用SQL Server Management Studio修改觸發(fā)器修改觸發(fā)器修改觸發(fā)器的操作步驟如下。修改觸發(fā)器的操作步驟如下。(1)在)在“對(duì)象資源管理器對(duì)象資源管理器”中展開中展開“數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)”。(2)選擇觸發(fā)器所在的數(shù)據(jù)庫(kù),如)選擇觸發(fā)器所在的數(shù)據(jù)庫(kù),如teaching數(shù)據(jù)庫(kù),并展數(shù)據(jù)庫(kù),并展開該數(shù)據(jù)庫(kù)的開該數(shù)據(jù)庫(kù)的“表表”節(jié)點(diǎn)。節(jié)點(diǎn)。(3)選擇觸發(fā)器所在的表)選擇觸發(fā)器所在的表score,展開表中的,展開表中的“觸發(fā)

20、器觸發(fā)器”。(4)右擊要修改的觸發(fā)器,在彈出的快捷菜單中選擇)右擊要修改的觸發(fā)器,在彈出的快捷菜單中選擇“修修改改”命令。命令。(5)在彈出的觸發(fā)器編輯窗口,用戶可以直接進(jìn)行修改。)在彈出的觸發(fā)器編輯窗口,用戶可以直接進(jìn)行修改。修改完畢,單擊工具欄中的修改完畢,單擊工具欄中的“!”按鈕執(zhí)行該觸發(fā)器,按鈕執(zhí)行該觸發(fā)器,將修改后的觸發(fā)器保存到數(shù)據(jù)庫(kù)中。將修改后的觸發(fā)器保存到數(shù)據(jù)庫(kù)中。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.4.2 修改觸發(fā)器修改觸發(fā)器2. 使用使用ALTER TRIGGER語(yǔ)句修改觸發(fā)器語(yǔ)句修改觸發(fā)器ALTER TRIGGER語(yǔ)句的語(yǔ)法格式如

21、下:語(yǔ)句的語(yǔ)法格式如下:ALTER TRIGGER trigger_name ON table | view WITH ENCRYPTION FOR | AFTER | INSTEAD OFINSERT, UPDATE , DELETE AS sql_statament ,n 例例8.11 使用使用ALTER TRIGGER語(yǔ)句修改觸發(fā)器語(yǔ)句修改觸發(fā)器update_s_tr,用來(lái)禁止更新學(xué)號(hào)字段和姓名字段的值。,用來(lái)禁止更新學(xué)號(hào)字段和姓名字段的值。程序代碼如下程序代碼如下:ALTER TRIGGER update_s_tr ON student AFTER UPDATEASIF UPDATE(

22、studentno) OR UPDATE(sname) BEGIN RAISERROR(不能修改學(xué)號(hào)或姓名不能修改學(xué)號(hào)或姓名,16,2) ROLLBACK END清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.4.3 刪除觸發(fā)器刪除觸發(fā)器1. 使用使用SQL Server Management Studio刪除觸發(fā)器刪除觸發(fā)器操作步驟與修改相近。只是在右擊觸發(fā)器時(shí),在彈操作步驟與修改相近。只是在右擊觸發(fā)器時(shí),在彈出的快捷菜單中選擇出的快捷菜單中選擇“刪除刪除”命令,單擊命令,單擊“確定確定”按鈕,即可刪除該觸發(fā)器。按鈕,即可刪除該觸發(fā)器。2. 使用使用DROP

23、TRIGGER語(yǔ)句刪除觸發(fā)器語(yǔ)句刪除觸發(fā)器DROP TRIGGER的語(yǔ)法格式如下:的語(yǔ)法格式如下:DROP TRIGGER trigger_name ,n 例如可以使用如下語(yǔ)句來(lái)刪除觸發(fā)器例如可以使用如下語(yǔ)句來(lái)刪除觸發(fā)器update_s_tr。DROP TRIGGER update_s_tr 。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開發(fā) (第2版)8.4.4 禁用觸發(fā)器禁用觸發(fā)器1. 使用使用SQL Server Management Studio禁用觸發(fā)器禁用觸發(fā)器操作步驟如下。操作步驟如下。(1)在)在“對(duì)象資源管理器對(duì)象資源管理器”中展開中展開“數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)”節(jié)點(diǎn)。節(jié)點(diǎn)。(2)選擇觸發(fā)器所在的數(shù)據(jù)庫(kù),如)選擇觸發(fā)器所在的數(shù)據(jù)庫(kù),如teaching數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù),并展開該數(shù)據(jù)庫(kù)的并展開該數(shù)據(jù)庫(kù)的“表表”節(jié)點(diǎn)。節(jié)點(diǎn)。(3)選擇觸發(fā)器所在的表)選擇觸發(fā)器所在的表score,展開,展開“觸發(fā)器觸

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論