自定義函數(shù)、存儲(chǔ)過(guò)程和觸發(fā)器_第1頁(yè)
自定義函數(shù)、存儲(chǔ)過(guò)程和觸發(fā)器_第2頁(yè)
自定義函數(shù)、存儲(chǔ)過(guò)程和觸發(fā)器_第3頁(yè)
自定義函數(shù)、存儲(chǔ)過(guò)程和觸發(fā)器_第4頁(yè)
自定義函數(shù)、存儲(chǔ)過(guò)程和觸發(fā)器_第5頁(yè)
已閱讀5頁(yè),還剩33頁(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 SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性 自定義函數(shù)、存儲(chǔ)過(guò)程和觸發(fā)器自定義函數(shù)、存儲(chǔ)過(guò)程和觸發(fā)器技能目標(biāo)技能目標(biāo):本章教學(xué)內(nèi)容是本章教學(xué)內(nèi)容是SQL ServerSQL Server程序設(shè)計(jì)程序設(shè)計(jì)的靈魂,掌握和使用好它們對(duì)數(shù)據(jù)庫(kù)的開(kāi)發(fā)的靈魂,掌握和使用好它們對(duì)數(shù)據(jù)庫(kù)的開(kāi)發(fā)與應(yīng)用非常重要。通過(guò)學(xué)習(xí),掌握以下操作與應(yīng)用非常重要。通過(guò)學(xué)習(xí),掌握以下操作技能:技能: 編寫(xiě)創(chuàng)建、使用簡(jiǎn)單的自定義函數(shù)、存儲(chǔ)過(guò)編寫(xiě)創(chuàng)建、使用簡(jiǎn)單的自定義函數(shù)、存儲(chǔ)過(guò)程、觸發(fā)器程序。程、觸發(fā)器程序。SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整

2、性1 1 自定義函數(shù)自定義函數(shù)1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理在在SQL ServerSQL Server中,除了系統(tǒng)內(nèi)置的函數(shù)外,中,除了系統(tǒng)內(nèi)置的函數(shù)外,用戶還可以自己定義函數(shù),來(lái)補(bǔ)充和擴(kuò)展用戶還可以自己定義函數(shù),來(lái)補(bǔ)充和擴(kuò)展系統(tǒng)支持的內(nèi)置函數(shù)。系統(tǒng)支持的內(nèi)置函數(shù)。自定義函數(shù)自定義函數(shù)是由一個(gè)或多個(gè)是由一個(gè)或多個(gè) Transact-Transact-SQL SQL 語(yǔ)句組成的子程序,可用于

3、封裝代碼語(yǔ)句組成的子程序,可用于封裝代碼以便重復(fù)使用。以便重復(fù)使用。 標(biāo)量函數(shù)、內(nèi)嵌表值函數(shù)、多語(yǔ)句表標(biāo)量函數(shù)、內(nèi)嵌表值函數(shù)、多語(yǔ)句表值函數(shù)值函數(shù)SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性1.11.1 1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理【演練8.1】使用企業(yè)管理器管理:創(chuàng)建、查看、刪使用企業(yè)管理器管理:創(chuàng)建、查看、刪除自定義函數(shù)。在除自定義函數(shù)。在“教學(xué)

4、成績(jī)管理數(shù)據(jù)庫(kù)教學(xué)成績(jī)管理數(shù)據(jù)庫(kù)”中創(chuàng)中創(chuàng)建用戶定義函數(shù)建用戶定義函數(shù)“dbo.is中文字符串中文字符串”(判斷給判斷給定的字符串自變量是否是純中文定的字符串自變量是否是純中文)。【演練8.1】使用企業(yè)管理器管理:創(chuàng)建、查看、刪使用企業(yè)管理器管理:創(chuàng)建、查看、刪除自定義函數(shù)。在除自定義函數(shù)。在“教學(xué)成績(jī)管理數(shù)據(jù)庫(kù)教學(xué)成績(jī)管理數(shù)據(jù)庫(kù)”中創(chuàng)中創(chuàng)建用戶定義函數(shù)建用戶定義函數(shù)“dbo.is中文字符串中文字符串”(判斷給判斷給定的字符串自變量是否是純中文定的字符串自變量是否是純中文)。SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性1.11.1 標(biāo)量函數(shù)標(biāo)量函數(shù)(2)

5、(2)1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理【知識(shí)點(diǎn)】(1)自定義函數(shù)是由一個(gè)或多個(gè)自定義函數(shù)是由一個(gè)或多個(gè)T-SQL語(yǔ)句組成的語(yǔ)句組成的子程序,可用于封裝代碼以便重復(fù)使用。自定義子程序,可用于封裝代碼以便重復(fù)使用。自定義函數(shù)的輸入?yún)?shù)可以為零個(gè)或最多函數(shù)的輸入?yún)?shù)可以為零個(gè)或最多1024個(gè),輸個(gè),輸入?yún)?shù)能夠是除了時(shí)間戳入?yún)?shù)能夠是除了時(shí)間戳(timestamp)、游標(biāo)、游標(biāo)(cursor)和表和

6、表(table)以外的其他變量。以外的其他變量。(2)標(biāo)量函數(shù)是給定標(biāo)量函數(shù)是給定n個(gè)個(gè)(0=nalter。(3)標(biāo)量函數(shù)在表達(dá)式中調(diào)用,內(nèi)嵌表值函數(shù)在標(biāo)量函數(shù)在表達(dá)式中調(diào)用,內(nèi)嵌表值函數(shù)在select語(yǔ)句的語(yǔ)句的from子句中調(diào)用。在調(diào)用函數(shù)的子句中調(diào)用。在調(diào)用函數(shù)的時(shí)候需要指明函數(shù)的擁有者和函數(shù)的名稱。時(shí)候需要指明函數(shù)的擁有者和函數(shù)的名稱。SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性內(nèi)嵌表值函數(shù)的調(diào)用內(nèi)嵌表值函數(shù)只能通過(guò)內(nèi)嵌表值函數(shù)只能通過(guò)SELECT語(yǔ)句調(diào)語(yǔ)句調(diào)用,內(nèi)嵌表值函數(shù)調(diào)用時(shí),可以僅使用用,內(nèi)嵌表值函數(shù)調(diào)用時(shí),可以僅使用函數(shù)名。函數(shù)名。 s

7、elect * from dbo.st_score(110001)1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性2 2 存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程【問(wèn)題提出】用戶定義函數(shù)采用零個(gè)或最多可以有 1024 個(gè)輸入?yún)?shù)并返回單個(gè)標(biāo)量值或單個(gè)表(記錄集)。但對(duì)于返回多個(gè)(或零個(gè))標(biāo)量值或多個(gè)(或零個(gè))表(記錄集)問(wèn)題,SQL Server如何

8、解決呢?1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理存儲(chǔ)過(guò)程:系統(tǒng)提供的存儲(chǔ)過(guò)程和用戶自定義的存儲(chǔ)過(guò)程。系統(tǒng)存儲(chǔ)過(guò)程存儲(chǔ)在master中,以sp_為前綴,在任何數(shù)據(jù)庫(kù)中都可以調(diào)用,在調(diào)用時(shí)不必在存儲(chǔ)過(guò)程前加上數(shù)據(jù)庫(kù)名。用戶自定義的存儲(chǔ)過(guò)程是由用戶創(chuàng)建的,是用來(lái)完成某項(xiàng)任務(wù)的。本節(jié)介紹的主要內(nèi)容是用戶自定義的存儲(chǔ)過(guò)程。SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性1自定

9、義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理【導(dǎo)例8.6】在在“教學(xué)成績(jī)管理數(shù)據(jù)庫(kù)教學(xué)成績(jī)管理數(shù)據(jù)庫(kù)”中,設(shè)計(jì)查詢中,設(shè)計(jì)查詢某班某門(mén)課程成績(jī)某班某門(mén)課程成績(jī):按學(xué)號(hào)排序成績(jī)表、人數(shù)、:按學(xué)號(hào)排序成績(jī)表、人數(shù)、最高分、最低分和平均分最高分、最低分和平均分(返回返回1個(gè)數(shù)據(jù)表和個(gè)數(shù)據(jù)表和4個(gè)標(biāo)個(gè)標(biāo)量值量值)?!局R(shí)點(diǎn)】(1)存儲(chǔ)過(guò)程是存儲(chǔ)在存儲(chǔ)過(guò)程是存儲(chǔ)在SQL服務(wù)器數(shù)據(jù)庫(kù)中的一組預(yù)服務(wù)器數(shù)據(jù)庫(kù)中的一組預(yù)編譯過(guò)的

10、編譯過(guò)的T-SQL語(yǔ)句,當(dāng)?shù)谝淮握{(diào)用以后,就駐語(yǔ)句,當(dāng)?shù)谝淮握{(diào)用以后,就駐留在內(nèi)存中,以后調(diào)用時(shí)不必再進(jìn)行編譯,因此留在內(nèi)存中,以后調(diào)用時(shí)不必再進(jìn)行編譯,因此它的運(yùn)行速度比獨(dú)立運(yùn)行同樣的程序要快。它的運(yùn)行速度比獨(dú)立運(yùn)行同樣的程序要快。(2)存儲(chǔ)過(guò)程可以容納對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種操作的編存儲(chǔ)過(guò)程可以容納對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種操作的編程語(yǔ)句,也可以調(diào)用其他的存儲(chǔ)過(guò)程。程語(yǔ)句,也可以調(diào)用其他的存儲(chǔ)過(guò)程。SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù)

11、內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理(3)創(chuàng)建創(chuàng)建, output將將參數(shù)的值返回給調(diào)用語(yǔ)句參數(shù)的值返回給調(diào)用語(yǔ)句:create procedure 存儲(chǔ)過(guò)程名存儲(chǔ)過(guò)程名 參數(shù)參數(shù) 參數(shù)的數(shù)據(jù)類(lèi)型參數(shù)的數(shù)據(jù)類(lèi)型 output ,n as任意數(shù)量的任意數(shù)量的T-SQL 語(yǔ)句語(yǔ)句創(chuàng)建存儲(chǔ)過(guò)程需要確定存儲(chǔ)過(guò)程的創(chuàng)建存儲(chǔ)過(guò)程需要確定存儲(chǔ)過(guò)程的3個(gè)組成部分個(gè)組成部分: 所有的輸入?yún)?shù)及執(zhí)行的輸出結(jié)果。所有的輸入?yún)?shù)及執(zhí)行的輸出結(jié)果。 被執(zhí)行的針對(duì)數(shù)據(jù)庫(kù)的操作語(yǔ)句,包括調(diào)用其他被執(zhí)行的針對(duì)數(shù)據(jù)庫(kù)的操作語(yǔ)句,包括調(diào)用其他存儲(chǔ)過(guò)程的語(yǔ)句。

12、存儲(chǔ)過(guò)程的語(yǔ)句。 返回給調(diào)用者的狀態(tài)值,以指明調(diào)用是否成功。返回給調(diào)用者的狀態(tài)值,以指明調(diào)用是否成功。SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理(4)存儲(chǔ)過(guò)程可以接受參數(shù),用戶通過(guò)指定存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程可以接受參數(shù),用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)的名字并給出參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù)如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)來(lái)執(zhí)行

13、它。存儲(chǔ)過(guò)程與函數(shù)不同,存儲(chǔ)過(guò)程既不能執(zhí)行它。存儲(chǔ)過(guò)程與函數(shù)不同,存儲(chǔ)過(guò)程既不能在被調(diào)用的位置上返回?cái)?shù)據(jù),也不能被引用在語(yǔ)在被調(diào)用的位置上返回?cái)?shù)據(jù),也不能被引用在語(yǔ)句當(dāng)中。句當(dāng)中。(5)一個(gè)存儲(chǔ)過(guò)程是一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)對(duì)象,可被客一個(gè)存儲(chǔ)過(guò)程是一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)對(duì)象,可被客戶端應(yīng)用程序多次調(diào)用:戶端應(yīng)用程序多次調(diào)用:execute 存儲(chǔ)過(guò)程名存儲(chǔ)過(guò)程名 參數(shù)參數(shù)1、參數(shù)、參數(shù)n Exec stu_info lili,計(jì)算機(jī)基礎(chǔ)計(jì)算機(jī)基礎(chǔ)exec name=lili,name=計(jì)算機(jī)基礎(chǔ)計(jì)算機(jī)基礎(chǔ)SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性1自定義函數(shù)自定義函

14、數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理【知識(shí)點(diǎn)】(1)用用T-SQL語(yǔ)句修改存儲(chǔ)過(guò)程的語(yǔ)法格式類(lèi)似語(yǔ)句修改存儲(chǔ)過(guò)程的語(yǔ)法格式類(lèi)似create proc,即,即create換成換成alter。(2)刪除存儲(chǔ)過(guò)程語(yǔ)法格式:刪除存儲(chǔ)過(guò)程語(yǔ)法格式:drop procedure 所有者所有者. 存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程 ,【導(dǎo)例8.7】修改【導(dǎo)例修改【導(dǎo)例8.6】某班某門(mén)課程成績(jī)某班某門(mén)課程成績(jī)存存儲(chǔ)過(guò)程,成績(jī)表按分?jǐn)?shù)從大到小排序;刪除

15、儲(chǔ)過(guò)程,成績(jī)表按分?jǐn)?shù)從大到小排序;刪除某班某班某門(mén)課程成績(jī)某門(mén)課程成績(jī)存儲(chǔ)過(guò)程。存儲(chǔ)過(guò)程。SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理【演練8.3】【導(dǎo)例8.8】使用企業(yè)管理器管理:創(chuàng)建、使用企業(yè)管理器管理:創(chuàng)建、查看、刪除自定義存儲(chǔ)過(guò)程。在查看、刪除自定義存儲(chǔ)過(guò)程。在“教學(xué)成績(jī)管理教學(xué)成績(jī)管理?yè)?jù)庫(kù)據(jù)庫(kù)”中創(chuàng)建用戶定義存儲(chǔ)

16、過(guò)程中創(chuàng)建用戶定義存儲(chǔ)過(guò)程“某班同學(xué)某班同學(xué)表表”(返回同學(xué)花名表、人數(shù)、男生人數(shù)和女生人返回同學(xué)花名表、人數(shù)、男生人數(shù)和女生人數(shù)數(shù))。SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性模塊化的程序設(shè)計(jì)。模塊化的程序設(shè)計(jì)。執(zhí)行速度快。執(zhí)行速度快。減少網(wǎng)絡(luò)通信量。減少網(wǎng)絡(luò)通信量。保證系統(tǒng)的安全性。保證系統(tǒng)的安全性。1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理SQL Serv

17、er SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性自定義函數(shù)和存儲(chǔ)過(guò)程的區(qū)別自定義函數(shù)和存儲(chǔ)過(guò)程的區(qū)別存儲(chǔ)過(guò)程,功能強(qiáng)大,可以執(zhí)行包括修改表等存儲(chǔ)過(guò)程,功能強(qiáng)大,可以執(zhí)行包括修改表等一系列數(shù)據(jù)庫(kù)操作,也可以創(chuàng)建為一系列數(shù)據(jù)庫(kù)操作,也可以創(chuàng)建為 SQL SQL Server Server 啟動(dòng)時(shí)自動(dòng)運(yùn)行的存儲(chǔ)過(guò)程。用戶定啟動(dòng)時(shí)自動(dòng)運(yùn)行的存儲(chǔ)過(guò)程。用戶定義函數(shù)不能用于執(zhí)行一組修改全局?jǐn)?shù)據(jù)庫(kù)狀態(tài)義函數(shù)不能用于執(zhí)行一組修改全局?jǐn)?shù)據(jù)庫(kù)狀態(tài)的操作。的操作。 存儲(chǔ)過(guò)程,可返回記錄集。自定義函數(shù),可以存儲(chǔ)過(guò)程,可返回記錄集。自定義函數(shù),可以返回表變量。返回表變量。 存儲(chǔ)過(guò)程,其返回值不能被直

18、接引用。自定義存儲(chǔ)過(guò)程,其返回值不能被直接引用。自定義函數(shù),其返回值可以被直接引用。函數(shù),其返回值可以被直接引用。存儲(chǔ)過(guò)程,用存儲(chǔ)過(guò)程,用 EXECUTE EXECUTE 語(yǔ)句執(zhí)行。自定義函語(yǔ)句執(zhí)行。自定義函數(shù),在查詢語(yǔ)句中調(diào)用。數(shù),在查詢語(yǔ)句中調(diào)用。 函數(shù)必須始終返回一個(gè)值函數(shù)必須始終返回一個(gè)值( (一個(gè)標(biāo)量值或一個(gè)一個(gè)標(biāo)量值或一個(gè)表格表格) )。而存儲(chǔ)過(guò)程可以返回一個(gè)標(biāo)量值、一。而存儲(chǔ)過(guò)程可以返回一個(gè)標(biāo)量值、一個(gè)表值或無(wú)需返回值。個(gè)表值或無(wú)需返回值。 SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性3 3 觸發(fā)器觸發(fā)器當(dāng)表或視圖中的某些重要數(shù)據(jù)發(fā)生變化當(dāng)

19、表或視圖中的某些重要數(shù)據(jù)發(fā)生變化 時(shí),為了保持?jǐn)?shù)據(jù)的一致性和完整性,可以自動(dòng)時(shí),為了保持?jǐn)?shù)據(jù)的一致性和完整性,可以自動(dòng)執(zhí)行某段程序保證相關(guān)聯(lián)其他數(shù)據(jù)也跟著進(jìn)行相執(zhí)行某段程序保證相關(guān)聯(lián)其他數(shù)據(jù)也跟著進(jìn)行相應(yīng)的變化。能完成這種功能的程序就是觸發(fā)器。應(yīng)的變化。能完成這種功能的程序就是觸發(fā)器。 如當(dāng)修改如當(dāng)修改“學(xué)院信息表學(xué)院信息表”中編號(hào)中編號(hào)0101為為0808時(shí),時(shí),“系部信系部信息表息表”中中4 4位編號(hào)前位編號(hào)前2 2位為位為0101的編號(hào)的前的編號(hào)的前2 2位也應(yīng)該位也應(yīng)該修改為修改為0808,“教研室信息表教研室信息表”中中6 6位編號(hào)前位編號(hào)前2 2位為位為0101的編號(hào)的前的編號(hào)的前

20、2 2位也應(yīng)該修改為位也應(yīng)該修改為0808。能完成這種功。能完成這種功能的程序就是觸發(fā)器。能的程序就是觸發(fā)器。 1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理

21、 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理 觸發(fā)器觸發(fā)器【演練8.4】【導(dǎo)例8.9】在學(xué)院信息表中創(chuàng)建一個(gè)名在學(xué)院信息表中創(chuàng)建一個(gè)名為為“T修改學(xué)院信息表編號(hào)修改學(xué)院信息表編號(hào)”的觸發(fā)器。當(dāng)修改學(xué)的觸發(fā)器。當(dāng)修改學(xué)院信息表中編號(hào)時(shí),則修改院信息表中編號(hào)時(shí),則修改“系部信息表系部信息表”中中“編編號(hào)號(hào)”、“專業(yè)信息表專業(yè)信息表”中中“院系編號(hào)院系編號(hào)”、“課程信課程信息表息表”中中“院系編號(hào)院系編號(hào)”、“教研室信息表教研室信息表”中中“編編號(hào)號(hào)”、“教師信息表教師信息表”中中“教研室編號(hào)教研室編號(hào)”的前的前2位位為相應(yīng)的編號(hào)。為相應(yīng)的編號(hào)。SQL Server SQL

22、Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理【創(chuàng)建觸發(fā)器的知識(shí)點(diǎn)】CREATE TRIGGER 觸發(fā)器名觸發(fā)器名 ON 表名表名或或視圖名視圖名 FOR|AFTER | INSTEAD OF INSERT ,UPDATE ,DELETE AS IF UPDATE(列名列名1) AND|OR UPDATE(列名列名2),.SQL語(yǔ)句語(yǔ)句SQL Serve

23、r SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性(1) (1) 觸發(fā)器名稱觸發(fā)器名稱:觸發(fā)器名。:觸發(fā)器名。(2) (2) 何處觸發(fā)何處觸發(fā):表名或視圖名。:表名或視圖名。(3) (3) 何時(shí)激發(fā)何時(shí)激發(fā):FOR|AFTERFOR|AFTER指定為指定為AFTERAFTER觸發(fā)器,觸發(fā)器, INSTEAD OFINSTEAD OF指定為指定為INSTEADINSTEAD觸發(fā)器。觸發(fā)器。(4) (4) 何種數(shù)據(jù)修改語(yǔ)句觸發(fā)何種數(shù)據(jù)修改語(yǔ)句觸發(fā):INSERTINSERT指定為指定為INSERTINSERT觸發(fā)器;觸發(fā)器;UPDATE UPDATE 指定為指定為UPDATEUPDA

24、TE觸發(fā)器;觸發(fā)器;DELETEDELETE指定為指定為DELETEDELETE觸發(fā)觸發(fā)器。器。(5) (5) 何列數(shù)據(jù)修改時(shí)觸發(fā)何列數(shù)據(jù)修改時(shí)觸發(fā):可選項(xiàng):可選項(xiàng)IF UPDATE(IF UPDATE(列名列名1) 1) AND|OR UPDATE(AND|OR UPDATE(列名列名2) .n 2) .n 用于指定如果測(cè)試用于指定如果測(cè)試到在到在 列名列名11且或且或 列名列名22上進(jìn)行的上進(jìn)行的 INSERT INSERT 或或 UPDATE UPDATE 操操作時(shí)觸發(fā)。不能用于作時(shí)觸發(fā)。不能用于 DELETE DELETE 語(yǔ)句觸發(fā)器。語(yǔ)句觸發(fā)器。(6) (6) 如何觸發(fā)如何觸發(fā):SQ

25、LSQL語(yǔ)句指定觸發(fā)器觸發(fā)時(shí)所作的操作。語(yǔ)句指定觸發(fā)器觸發(fā)時(shí)所作的操作。1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性 執(zhí)行觸發(fā)器時(shí),系統(tǒng)創(chuàng)立了兩個(gè)特殊的邏輯表:執(zhí)行觸發(fā)器時(shí),系統(tǒng)創(chuàng)立了兩個(gè)特殊的邏輯表:insertedinserted和和deleteddeleted表:表:(1 1)insertedinserted邏輯表:

26、當(dāng)向表中插入數(shù)據(jù)時(shí),邏輯表:當(dāng)向表中插入數(shù)據(jù)時(shí),INSERTINSERT觸發(fā)器觸發(fā)器觸發(fā)執(zhí)行,新的記錄插入到觸發(fā)器表和觸發(fā)執(zhí)行,新的記錄插入到觸發(fā)器表和insertedinserted表中。表中。(2 2)deleteddeleted邏輯表:用于保存已從表中刪除的記錄,當(dāng)觸邏輯表:用于保存已從表中刪除的記錄,當(dāng)觸發(fā)一個(gè)發(fā)一個(gè)deletedelete觸發(fā)器時(shí),被刪除的記錄存放到觸發(fā)器時(shí),被刪除的記錄存放到deleteddeleted邏邏輯表中。輯表中。(3 3)修改一條記錄等于插入一條新記錄,同時(shí)刪除舊記錄。)修改一條記錄等于插入一條新記錄,同時(shí)刪除舊記錄。對(duì)定義了對(duì)定義了updateupdat

27、e觸發(fā)器的表記錄修改時(shí),表中原紀(jì)錄移到觸發(fā)器的表記錄修改時(shí),表中原紀(jì)錄移到了了deleteddeleted表中表中 ,修改過(guò)的記錄插入到,修改過(guò)的記錄插入到insertedinserted表中,觸表中,觸發(fā)器可檢查發(fā)器可檢查deleteddeleted表、表、insertedinserted表及被修改的表。表及被修改的表。1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理SQL Server SQL Serve

28、r 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性觸發(fā)器在創(chuàng)建和使用中有如下觸發(fā)器在創(chuàng)建和使用中有如下限制限制:(1)create trigger 語(yǔ)句只能作為批處理的第一條語(yǔ)句。語(yǔ)句只能作為批處理的第一條語(yǔ)句。1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理(2)在表中如果既有約束又有觸發(fā)器,則在執(zhí)行中約束優(yōu)先在表中如果既有約束又有觸發(fā)器,則在執(zhí)行中約束優(yōu)先于觸發(fā)器。而且如果在操作中觸發(fā)器與約束發(fā)生沖突,于觸發(fā)器

29、。而且如果在操作中觸發(fā)器與約束發(fā)生沖突,觸發(fā)器將不執(zhí)行。觸發(fā)器將不執(zhí)行。(3)觸發(fā)器中不允許包含以下觸發(fā)器中不允許包含以下SQL語(yǔ)句:語(yǔ)句:ALTER DATABASE、CREATE DATABAS、DROP DATABASE、RESTORE DATABASE、RESTORE LOG等。等。(4)不能在視圖或臨時(shí)表上建立觸發(fā)器,但是在觸發(fā)器定義不能在視圖或臨時(shí)表上建立觸發(fā)器,但是在觸發(fā)器定義中可以引用視圖或臨時(shí)表。當(dāng)觸發(fā)器引用視圖或臨時(shí)表,中可以引用視圖或臨時(shí)表。當(dāng)觸發(fā)器引用視圖或臨時(shí)表,并產(chǎn)生兩個(gè)特殊的表:并產(chǎn)生兩個(gè)特殊的表:deleted表和表和 inserted 表。表。這兩個(gè)表由系統(tǒng)進(jìn)

30、行創(chuàng)建和管理,用戶不能直接修改其這兩個(gè)表由系統(tǒng)進(jìn)行創(chuàng)建和管理,用戶不能直接修改其中的內(nèi)容,其結(jié)構(gòu)與觸發(fā)表相同,可以用于觸發(fā)器的條中的內(nèi)容,其結(jié)構(gòu)與觸發(fā)表相同,可以用于觸發(fā)器的條件測(cè)試。件測(cè)試。SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理(1)觸發(fā)器觸發(fā)器是特殊類(lèi)型的存儲(chǔ)過(guò)程,它能在任何試是特殊類(lèi)型的存儲(chǔ)過(guò)程,它能在任何試圖

31、改變表或視圖中由觸發(fā)器保護(hù)的數(shù)據(jù)時(shí)執(zhí)行。圖改變表或視圖中由觸發(fā)器保護(hù)的數(shù)據(jù)時(shí)執(zhí)行。觸發(fā)器主要通過(guò)觸發(fā)器主要通過(guò)操作事件操作事件(INSERT、UPDATE、DELETE)進(jìn)行觸發(fā)而被進(jìn)行觸發(fā)而被自動(dòng)執(zhí)行自動(dòng)執(zhí)行,不能直接調(diào)用不能直接調(diào)用執(zhí)行,也不能被傳送和接受參數(shù)。執(zhí)行,也不能被傳送和接受參數(shù)。(3)根據(jù)根據(jù)引起觸發(fā)的數(shù)據(jù)修改語(yǔ)句引起觸發(fā)的數(shù)據(jù)修改語(yǔ)句可分可分: INSERT、UPDATE和和DELETE觸發(fā)器;觸發(fā)器;(2)觸發(fā)器與表或視圖觸發(fā)器與表或視圖是不能分開(kāi)的,觸發(fā)器定義在是不能分開(kāi)的,觸發(fā)器定義在一個(gè)表或視圖中,當(dāng)在表或視圖中執(zhí)行插入一個(gè)表或視圖中,當(dāng)在表或視圖中執(zhí)行插入(INSE

32、RT)、修改、修改(UPDATE)、刪除、刪除(DELETE)操操作時(shí)觸發(fā)器被觸發(fā)自動(dòng)執(zhí)行。當(dāng)表或視圖被刪除作時(shí)觸發(fā)器被觸發(fā)自動(dòng)執(zhí)行。當(dāng)表或視圖被刪除時(shí)與它關(guān)聯(lián)的觸發(fā)器也一同被刪除。時(shí)與它關(guān)聯(lián)的觸發(fā)器也一同被刪除。【觸發(fā)器的知識(shí)點(diǎn)】SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性(4)(4)據(jù)據(jù)觸發(fā)時(shí)刻觸發(fā)時(shí)刻分為分為:AFTER和和INSTEAD觸發(fā)器。觸發(fā)器。 AFTER(之后之后)觸發(fā)器觸發(fā)器是在執(zhí)行觸發(fā)操作是在執(zhí)行觸發(fā)操作(INSERT、UPDATE或或DELETE)和處理完約束之后激發(fā);和處理完約束之后激發(fā);1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程

33、3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理INSTEAD(替代替代)觸發(fā)器觸發(fā)器是由觸發(fā)器的程序代替代是由觸發(fā)器的程序代替代替替INSERT、UPDATE或或DELETE語(yǔ)句執(zhí)行,在處語(yǔ)句執(zhí)行,在處理約束之前激發(fā)。理約束之前激發(fā)。若執(zhí)行若執(zhí)行INSERT、UPDATE或或DELETE語(yǔ)句違犯約束語(yǔ)句違犯約束條件時(shí),將不執(zhí)行條件時(shí),將不執(zhí)行AFTER觸發(fā)器;而在定義觸發(fā)器;而在定義INSTEAD OF觸發(fā)器的表或視圖上執(zhí)行觸發(fā)器的表或視圖上執(zhí)行

34、INSERT、UPDATE或或 DELETE語(yǔ)句時(shí),會(huì)激發(fā)觸發(fā)器而不語(yǔ)句時(shí),會(huì)激發(fā)觸發(fā)器而不執(zhí)行這些數(shù)據(jù)操作語(yǔ)句本身。執(zhí)行這些數(shù)據(jù)操作語(yǔ)句本身。SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性(5)(5)一個(gè)表或視圖可以定義多個(gè)一個(gè)表或視圖可以定義多個(gè)afterafter觸發(fā)器,一個(gè)觸發(fā)器,一個(gè)表或視圖只可以定義一個(gè)表或視圖只可以定義一個(gè)insteadinstead觸發(fā)器。觸發(fā)器。1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理

35、管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理(1)觸發(fā)器運(yùn)行時(shí)觸發(fā)器運(yùn)行時(shí)SQL Server會(huì)在內(nèi)存中自動(dòng)創(chuàng)會(huì)在內(nèi)存中自動(dòng)創(chuàng)建和管理建和管理deleted 表表和和 inserted 表表,用于,用于在觸發(fā)器內(nèi)部測(cè)試某些數(shù)據(jù)修改的效果及設(shè)置觸在觸發(fā)器內(nèi)部測(cè)試某些數(shù)據(jù)修改的效果及設(shè)置觸發(fā)器操作的條件,用戶不能直接對(duì)表中的數(shù)據(jù)進(jìn)發(fā)器操作的條件,用戶不能直接對(duì)表中的數(shù)據(jù)進(jìn)行更改。行更改?!緫?yīng)用觸發(fā)器的知識(shí)點(diǎn)】(2)DELETE觸發(fā)器觸發(fā)器會(huì)將刪除舊行的內(nèi)容保存在會(huì)將刪除舊行的內(nèi)容保存在deleted表中,表中,INSERT觸發(fā)器觸發(fā)器會(huì)將添加新行的會(huì)將添加新行的內(nèi)容保存在內(nèi)容保存在in

36、serted表中,而表中,而UPDATE觸發(fā)器觸發(fā)器將替換舊行的內(nèi)容保存在將替換舊行的內(nèi)容保存在deleted表中、替換的表中、替換的新行內(nèi)容保存新行內(nèi)容保存inserted表中表中 語(yǔ)句中。語(yǔ)句中。SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理2. 修改、刪除觸發(fā)器修改、刪除觸發(fā)器【知識(shí)點(diǎn)】(1)修改觸發(fā)器語(yǔ)法格式類(lèi)似修改

37、觸發(fā)器語(yǔ)法格式類(lèi)似create trigger,只需將只需將create換成換成alter。(2)sp_rename 舊的觸發(fā)器名舊的觸發(fā)器名 新的觸發(fā)器名新的觸發(fā)器名【導(dǎo)例8.10】在在“學(xué)院信息表學(xué)院信息表”中創(chuàng)建一個(gè)名為中創(chuàng)建一個(gè)名為“T刪除學(xué)院信息表記錄刪除學(xué)院信息表記錄”的觸發(fā)器。當(dāng)要?jiǎng)h除的觸發(fā)器。當(dāng)要?jiǎng)h除“學(xué)院信息表學(xué)院信息表”中的記錄時(shí),檢查中的記錄時(shí),檢查“系部信息表系部信息表”中是否有該學(xué)院的系部,如果有則給出提示信息中是否有該學(xué)院的系部,如果有則給出提示信息不允許刪除該條記錄。不允許刪除該條記錄。(3)drop trigger 觸發(fā)器名觸發(fā)器名如果刪除表,則表中所有的觸發(fā)器

38、將被自動(dòng)刪除。如果刪除表,則表中所有的觸發(fā)器將被自動(dòng)刪除。 SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理【演練8.5】使用企業(yè)管理器管理:創(chuàng)建、查看、使用企業(yè)管理器管理:創(chuàng)建、查看、刪除觸發(fā)器。在刪除觸發(fā)器。在“教學(xué)成績(jī)管理數(shù)據(jù)庫(kù)教學(xué)成績(jī)管理數(shù)據(jù)庫(kù)”、“學(xué)院信息表學(xué)院信息表”SQL Server創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)器“T刪刪

39、除學(xué)院信息表記錄除學(xué)院信息表記錄”。SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性(1)(1)引用引用完整性完整性( (外鍵外鍵) )的級(jí)聯(lián)更新、級(jí)聯(lián)刪除用的級(jí)聯(lián)更新、級(jí)聯(lián)刪除用來(lái)實(shí)現(xiàn)主鍵與引用鍵之間的級(jí)聯(lián),而觸發(fā)器來(lái)實(shí)現(xiàn)主鍵與引用鍵之間的級(jí)聯(lián),而觸發(fā)器可可實(shí)現(xiàn)數(shù)據(jù)庫(kù)中的表間記錄數(shù)據(jù)的級(jí)聯(lián)更改和級(jí)實(shí)現(xiàn)數(shù)據(jù)庫(kù)中的表間記錄數(shù)據(jù)的級(jí)聯(lián)更改和級(jí)聯(lián)刪除聯(lián)刪除。如。如【導(dǎo)例【導(dǎo)例8.98.9】所】所示。示。1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理

40、管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理(2)(2)觸發(fā)器觸發(fā)器可以強(qiáng)制比引用完整性可以強(qiáng)制比引用完整性( (外鍵外鍵) )、CHECKCHECK約束更為復(fù)雜的約束。約束更為復(fù)雜的約束。如【導(dǎo)例如【導(dǎo)例8.108.10】所示。】所示。 (3)(3)觸發(fā)器觸發(fā)器也也可以評(píng)估數(shù)據(jù)修改前后的表狀態(tài),可以評(píng)估數(shù)據(jù)修改前后的表狀態(tài),并根據(jù)其差異采取對(duì)策。并根據(jù)其差異采取對(duì)策。SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性4. 4. 本章實(shí)訓(xùn)本章實(shí)訓(xùn) 目目的的 練習(xí)用企業(yè)管理器和查詢分析器創(chuàng)建用戶自定練習(xí)用企業(yè)管理器和查詢分析器創(chuàng)建用戶

41、自定義函數(shù)、存儲(chǔ)過(guò)程、觸發(fā)器,并掌握創(chuàng)建和調(diào)義函數(shù)、存儲(chǔ)過(guò)程、觸發(fā)器,并掌握創(chuàng)建和調(diào)用它們的方法用它們的方法。 內(nèi)內(nèi)容容 通過(guò)【企業(yè)管理器】或【查詢分析器】創(chuàng)建用戶自定義通過(guò)【企業(yè)管理器】或【查詢分析器】創(chuàng)建用戶自定義函數(shù)、存儲(chǔ)過(guò)程、觸發(fā)器函數(shù)、存儲(chǔ)過(guò)程、觸發(fā)器1 1創(chuàng)建一個(gè)用戶自定義函數(shù):創(chuàng)建一個(gè)用戶自定義函數(shù): 查詢宿舍函數(shù)查詢宿舍函數(shù) ,通過(guò),通過(guò)輸入學(xué)生姓名,查詢學(xué)生的姓名、性別、宿舍編號(hào)、宿輸入學(xué)生姓名,查詢學(xué)生的姓名、性別、宿舍編號(hào)、宿舍電話號(hào)碼。并調(diào)用該函數(shù)查詢。舍電話號(hào)碼。并調(diào)用該函數(shù)查詢。2 2創(chuàng)建一個(gè)帶參數(shù)的存儲(chǔ)過(guò)程:創(chuàng)建一個(gè)帶參數(shù)的存儲(chǔ)過(guò)程: 查詢宿舍過(guò)程查詢宿舍過(guò)程 ,

42、輸,輸入宿舍編號(hào),查詢某宿舍同學(xué)的存儲(chǔ)過(guò)程。并帶參數(shù),入宿舍編號(hào),查詢某宿舍同學(xué)的存儲(chǔ)過(guò)程。并帶參數(shù),執(zhí)行該存儲(chǔ)過(guò)程。執(zhí)行該存儲(chǔ)過(guò)程。3 3在宿舍表上創(chuàng)建一個(gè)觸發(fā)器:在宿舍表上創(chuàng)建一個(gè)觸發(fā)器: 修改宿舍編號(hào)修改宿舍編號(hào) ,當(dāng),當(dāng)修改該表中的宿舍編號(hào)時(shí),同時(shí)修改同學(xué)表中的宿舍編修改該表中的宿舍編號(hào)時(shí),同時(shí)修改同學(xué)表中的宿舍編號(hào)。號(hào)。 1自定義函數(shù)自定義函數(shù)2存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程3觸發(fā)器觸發(fā)器5本章小結(jié)本章小結(jié)6本章習(xí)題本章習(xí)題4本章實(shí)訓(xùn)本章實(shí)訓(xùn) 標(biāo)量函數(shù)標(biāo)量函數(shù) 內(nèi)嵌表值函數(shù)內(nèi)嵌表值函數(shù) SQL管理管理 MMC管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) SQL管理管理 優(yōu)點(diǎn)優(yōu)點(diǎn) MMC管理管理SQL Server SQL Server 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)過(guò)程完整性數(shù)據(jù)過(guò)程完整性 自定義函數(shù)、存儲(chǔ)過(guò)程和觸發(fā)器自定義函數(shù)、存儲(chǔ)過(guò)程和觸發(fā)器,他們是一組,他們是一組SQLSQL語(yǔ)句集。語(yǔ)句集。 自定義函數(shù)自定義函數(shù)是用來(lái)補(bǔ)充和擴(kuò)展系統(tǒng)內(nèi)置函數(shù)的。是用來(lái)補(bǔ)充和擴(kuò)展系統(tǒng)內(nèi)置函數(shù)的。 存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程可以由用戶直接調(diào)用執(zhí)行,用戶能夠使可以由用戶直接調(diào)用執(zhí)行,用戶能夠使用相同的存儲(chǔ)過(guò)程來(lái)保證數(shù)據(jù)的一致

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論