Sqlserver技術(shù)知識點之二十.復(fù)習(xí)課程-2023修改整理_第1頁
Sqlserver技術(shù)知識點之二十.復(fù)習(xí)課程-2023修改整理_第2頁
Sqlserver技術(shù)知識點之二十.復(fù)習(xí)課程-2023修改整理_第3頁
Sqlserver技術(shù)知識點之二十.復(fù)習(xí)課程-2023修改整理_第4頁
Sqlserver技術(shù)知識點之二十.復(fù)習(xí)課程-2023修改整理_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

千里之行,始于足下讓知識帶有溫度。第第2頁/共2頁精品文檔推薦Sqlserver技術(shù)知識點之二十.復(fù)習(xí)課程Sqlserver技術(shù)學(xué)問點之二十

系統(tǒng)存儲過程就是系統(tǒng)創(chuàng)建的存儲過程,目的在于能夠便利地從系統(tǒng)表中查詢信息或完成與更新數(shù)據(jù)庫表相關(guān)的管理任務(wù)或其它的系統(tǒng)管理任務(wù)。系統(tǒng)過程以“sp_"_為開始,在Master數(shù)據(jù)庫中創(chuàng)建并保存在該數(shù)據(jù)庫中,為數(shù)據(jù)庫管理者全部。一些系統(tǒng)過程只能由系統(tǒng)管理員使用,而有些系統(tǒng)過程通過授權(quán)可以被其它用戶所使用。

系統(tǒng)存儲過程主要包括以下幾類:(這里主要給出每類系統(tǒng)過程中常常使用的系統(tǒng)過程)

在上面幾節(jié)我們介紹了普通意義的存儲過程,即用戶自定義的存儲過程和系統(tǒng)存儲過程。本節(jié)將介紹一種特別的存儲過程,即觸發(fā)器。在余下各節(jié)中我們將對觸發(fā)器的概念、作用以及對其的使用辦法作詳盡介紹,使讀者了解如何定義觸發(fā)器,創(chuàng)建和使用各種不同復(fù)雜程度的觸發(fā)器。

12.5.1觸發(fā)器的概念及作用

觸發(fā)器是一種特別類型的存儲過程,它不同于我們前面介紹過的存儲過程。觸發(fā)器主要是通過大事舉行觸發(fā)而被執(zhí)行的,而存儲過程可以通過存儲過程名字而被直接調(diào)用。當(dāng)對某一表舉行諸如UPDATE、INSERT、DELETE這些操作時,SQLServer就會自動執(zhí)行觸發(fā)器所定義的SQL語句,從而確保對數(shù)據(jù)的處理必需符合由這些SQL語句所定義的規(guī)章。

觸發(fā)器的主要作用就是其能夠?qū)崿F(xiàn)由主鍵和外鍵所不能保證的復(fù)雜的參照完整性和數(shù)據(jù)的全都性。除此之外,觸發(fā)器還有其它許多不同的功能:

(1)強化約束(Enforcerestriction)

觸發(fā)器能夠?qū)崿F(xiàn)比CHECK語句更為復(fù)雜的約束。

(2)跟蹤變化Auditingchanges

觸發(fā)器可以偵測數(shù)據(jù)庫內(nèi)的操作,從而不允許數(shù)據(jù)庫中未經(jīng)許可的指定更新和變化。

(3)級聯(lián)運行(Cascadedoperation)。

觸發(fā)器可以偵測數(shù)據(jù)庫內(nèi)的操作,并自動地級聯(lián)影響囫圇數(shù)據(jù)庫的各項內(nèi)容。例如,某個表上的觸發(fā)器中包含有對另外一個表的數(shù)據(jù)操作(如刪除,更新,插入)而該操作又導(dǎo)致該表上觸發(fā)器被觸發(fā)。

(4)存儲過程的調(diào)用(Storedprocedureinvocation)。

為了響應(yīng)數(shù)據(jù)庫更新觸,發(fā)器可以調(diào)用一個或多個存儲過程,甚至可以通過外部過程的調(diào)用而在DBMS(數(shù)據(jù)庫管理系統(tǒng))本身之外舉行操作。

由此可見,觸發(fā)器可以解決高級形式的業(yè)務(wù)規(guī)章或復(fù)雜行為限制以及實現(xiàn)定制記錄等一些方面的問題。例如,觸發(fā)器能夠找出某一表在數(shù)據(jù)修改前后狀態(tài)發(fā)生的差異,并按照這種差異執(zhí)行一定的處理。此外一個表的同一類型(INSERT、UPDATE、DELETE)的多個觸發(fā)器能夠?qū)ν环N數(shù)據(jù)操作實行多種不同的處理。

總體而言,觸發(fā)器性能通常比較低。當(dāng)運行觸發(fā)器時,系統(tǒng)處理的大部分時光花費在參照其它表的這一處理上,由于這些表既不在內(nèi)存中也不在數(shù)據(jù)庫設(shè)備上,而刪除表和插入表總是位于內(nèi)存中。可見觸發(fā)器所參照的其它表的位置打算了操作要花費的時光長短。

12.5.2觸發(fā)器的種類

SQLServer2000支持兩種類型的觸發(fā)器:AFTER觸發(fā)器和INSTEADOF觸發(fā)器。其中AFTER觸發(fā)器即為SQLServer2000版本以前所介紹的觸發(fā)器。該類型觸發(fā)器要求惟獨執(zhí)行某一操作(INSERTUPDATEDELETE)之后,觸發(fā)器才被觸發(fā),且只能在表上定義??梢詾獒槍Ρ淼耐徊僮鞫x多個觸發(fā)器。對于AFTER觸發(fā)器,可以定義哪一個觸發(fā)器被最先觸發(fā),哪一個被最后觸發(fā),通常使用系統(tǒng)過程sp_settriggerorder來完成此任務(wù)。

INSTEADOF觸發(fā)器表示并不執(zhí)行其所定義的操作(INSERT、UPDATE、DELETE),而僅是執(zhí)行觸發(fā)器本身。既可在表上定義INSTEADOF觸發(fā)器,也可以在視圖上定義INSTEADOF觸發(fā)器,但對同一操作只能定義一個INSTEADOF觸發(fā)器。

上面介紹了有關(guān)觸發(fā)器的概念、作用和一些基本問題,下面我們將分離介紹在MSSQLServer中如何用SQLServer管理工具EnterpriseManager和Transaction_SQL來創(chuàng)建觸發(fā)器。

在創(chuàng)建觸發(fā)器以前必需考慮到以下幾個方面:

?CREATETRIGGER語句必需是批處理的第一個語句;

?表的全部者具有創(chuàng)建觸發(fā)器的缺省權(quán)限,表的全部者不能把該權(quán)限傳給其它用戶;

?觸發(fā)器是數(shù)據(jù)庫對象,所以其命名必需符合命名規(guī)章;

?盡管在觸發(fā)器的SQL語句中可以參照其它數(shù)據(jù)庫中的對象,但是,觸發(fā)器只能創(chuàng)建在當(dāng)前數(shù)據(jù)庫中;

?雖然觸發(fā)器可以參照視圖或暫時表,但不能在視圖或暫時表上創(chuàng)建觸發(fā)器,而只能在基表或在創(chuàng)建視圖的表上創(chuàng)建觸發(fā)器;

?一個觸發(fā)器只能對應(yīng)一個表,這是由觸發(fā)器的機制打算的;

?盡管TRUNCATETABLE語句猶如沒有WHERE從句的DELETE語句,但是因為TRUNCATETABLE語句

沒有被記入日志,所以該語句不能觸發(fā)DELETE型觸發(fā)器;

?WRITETEXT語句不能觸發(fā)INSERT或UPDATE型的觸發(fā)器。

當(dāng)創(chuàng)建一個觸發(fā)器時,必需指定觸發(fā)器的名字,在哪一個表上定義觸發(fā)器,激活觸發(fā)器的修改語句,如INSERT、DELETE、UPDATE。固然兩個或三個不同的修改語句也可以都觸發(fā)同一個觸發(fā)器,如INSERT和UPDATE語句都能激活同一個觸發(fā)器。

12.6.1用管理工具EnterpriseManger創(chuàng)建觸發(fā)器

其操作步驟如下:

1.啟動EnterpriseManger,登錄到指定的服務(wù)器上。

2.綻開數(shù)據(jù)庫,然后綻開要在其上創(chuàng)建觸發(fā)器的表所在的數(shù)據(jù)庫,然后單擊該表。

3.右擊鼠標(biāo),在彈出菜單中挑選ALLTasks,然后單擊ManageTriggers…。

4.在名字框中挑選new,在文本框中輸入觸發(fā)器文本,如圖12-5所示。

5.單擊CheckSyntax檢查語句是否

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論