第9章使用觸發(fā)器和事務(wù)_第1頁(yè)
第9章使用觸發(fā)器和事務(wù)_第2頁(yè)
第9章使用觸發(fā)器和事務(wù)_第3頁(yè)
第9章使用觸發(fā)器和事務(wù)_第4頁(yè)
第9章使用觸發(fā)器和事務(wù)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(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)介

9.1創(chuàng)建觸發(fā)器9.1.1觸發(fā)器在SQLServer中,觸發(fā)器是一種通過(guò)事件進(jìn)行觸發(fā)而被執(zhí)行的專用類型的存儲(chǔ)過(guò)程.

觸發(fā)器是一個(gè)功能強(qiáng)大的工具,它與表格緊密相連,在表中數(shù)據(jù)發(fā)生變化時(shí)自動(dòng)強(qiáng)制執(zhí)行。9.1.2觸發(fā)器的作用觸發(fā)器的主要作用是實(shí)現(xiàn)由主鍵和外鍵所不能保證的復(fù)雜的參照完整性和數(shù)據(jù)一致性。除此之外,觸發(fā)器還有其它許多不同的功能。執(zhí)行更加復(fù)雜的約束操作。級(jí)聯(lián)更改數(shù)據(jù)庫(kù)中相關(guān)的數(shù)據(jù)表。返回自定義的錯(cuò)誤信息。比較數(shù)據(jù)庫(kù)修改前后數(shù)據(jù)的狀態(tài)。維護(hù)規(guī)范化數(shù)據(jù)。9.1.3觸發(fā)器的分類

在SQLServer2005中,觸發(fā)器可以分為DML觸發(fā)器和DDL觸發(fā)器兩種類型。DDL觸發(fā)器是當(dāng)數(shù)據(jù)庫(kù)服務(wù)器中發(fā)生數(shù)據(jù)定義語(yǔ)言(DDL)事件時(shí)執(zhí)行的存儲(chǔ)過(guò)程。這些事件主要對(duì)應(yīng)于T-SQL中的CREATE、ALTER和DROP語(yǔ)句,以及執(zhí)行類似DDL操作的某些系統(tǒng)存儲(chǔ)過(guò)程。DML觸發(fā)器是當(dāng)數(shù)據(jù)庫(kù)服務(wù)器中發(fā)生數(shù)據(jù)操作語(yǔ)言(DML)事件時(shí)執(zhí)行的存儲(chǔ)過(guò)程。DML事件包括在指定表或視圖中修改數(shù)據(jù)的INSERT語(yǔ)句、UPDATE語(yǔ)句或DELETE語(yǔ)句。9.1.3觸發(fā)器的分類

DML觸發(fā)器又分為AFTER觸發(fā)器和INSTEADOF觸發(fā)器兩種類型。AFTER觸發(fā)器在數(shù)據(jù)變動(dòng)(INSERT、UPDATE和DELETE操作)完成以后才被觸發(fā)。INSTEADOF觸發(fā)器在數(shù)據(jù)變動(dòng)以前被觸發(fā),并取代變動(dòng)數(shù)據(jù)的操作,而去執(zhí)行觸發(fā)器定義的操作。9.1.4使用T-SQL語(yǔ)句創(chuàng)建觸發(fā)器使用T-SQL語(yǔ)句CREATETRIGGER創(chuàng)建觸發(fā)器的基本語(yǔ)法格式如下:CREATETRIGGER觸發(fā)器名ON{表名|視圖名}[WITHENCRYPTION]{FOR|AFTER|INSTEADOF}{[INSERT],[UPDATE],[DELETE]}ASIFUPDATE(列名)[{AND|OR}UPDATE(列名)…]SQL語(yǔ)句9.1.4使用T-SQL語(yǔ)句創(chuàng)建觸發(fā)器其中各參數(shù)含義如下:WITHENCRYPTION:加密觸發(fā)器的文本。AFTER:指定在對(duì)數(shù)據(jù)表的相關(guān)操作之后,觸發(fā)器被觸發(fā)。INSTEADOF:指定執(zhí)行觸發(fā)器而不是執(zhí)行觸發(fā)語(yǔ)句,從而替代觸發(fā)語(yǔ)句的操作。{[INSERT],[UPDATE],[DELETE]}:指定在表或視圖上執(zhí)行哪些數(shù)據(jù)修改語(yǔ)句時(shí)激活觸發(fā)器的關(guān)鍵字,必須至少指定一個(gè)選項(xiàng)。IFUPDATE:指定對(duì)表內(nèi)某列做增加或修改內(nèi)容時(shí),觸發(fā)器才起作用,它可以指定兩個(gè)以上列,列名前可以不加表名。SQL語(yǔ)句:指定觸發(fā)器執(zhí)行的條件和動(dòng)作。9.1.5使用SSMS創(chuàng)建觸發(fā)器使用SQLServerManagementStudio創(chuàng)建觸發(fā)器的基本步驟演示。9.2管理與維護(hù)觸發(fā)器9.2.1查看觸發(fā)器信息觸發(fā)器被創(chuàng)建以后,它的名稱存放在系統(tǒng)表sysobjects中,它的創(chuàng)建源代碼存放在syscomments系統(tǒng)表中。(1)查看表中的觸發(fā)器信息可以使用系統(tǒng)存儲(chǔ)過(guò)程sp_helptrigger查看指定表中所定義的觸發(fā)器及它們的類型。(2)查看觸發(fā)器定義可以使用系統(tǒng)存儲(chǔ)過(guò)程sp_helptext查看指定觸發(fā)器的定義文本。9.2.1查看觸發(fā)器信息(3)查看觸發(fā)器的所有者和創(chuàng)建時(shí)間可以使用系統(tǒng)存儲(chǔ)過(guò)程sp_help查看觸發(fā)器的所有者和創(chuàng)建時(shí)間。9.2.2修改觸發(fā)器(1)使用SSMS修改觸發(fā)器定義使用SQLServerManagementStudio修改觸發(fā)器定義的基本步驟演示。(2)使用存儲(chǔ)過(guò)程sp_rename重命名觸發(fā)器使用存儲(chǔ)過(guò)程sp_rename重命名觸發(fā)器的語(yǔ)法格式為:sp_rename

原名稱,新名稱9.2.2修改觸發(fā)器(3)使用T-SQL語(yǔ)句修改觸發(fā)器正文使用T-SQL語(yǔ)句ALTERTRIGGER可以修改觸發(fā)器,具體語(yǔ)法形式如下:ALTERTRIGGER觸發(fā)器名ON{表名|視圖名}[WITHENCRYPTION]{FOR|AFTER|INSTEADOF}{[INSERT],[UPDATE],[DELETE]}ASIFUPDATE(列名)[{AND|OR}UPDATE(列名)…]SQL語(yǔ)句9.2.3刪除觸發(fā)器(1)使用SQL語(yǔ)句的DROPTRIGGER刪除指定的觸發(fā)器,其語(yǔ)法格式為:DROPTRIGGER觸發(fā)器名(2)刪除觸發(fā)器所在的表時(shí),SQLServer將自動(dòng)刪除與該表相關(guān)的觸發(fā)器。(3)在“對(duì)象資源管理器”中右鍵單擊需要?jiǎng)h除的觸發(fā)器名稱,在彈出的菜單中選擇“刪除”命令即可。9.2.4禁止和啟用觸發(fā)器使用T-SQL語(yǔ)句禁止和啟用觸發(fā)器的基本語(yǔ)法如下:ALTERTABLE表名{ENABLE|DISABLE}TRIGGER{ALL|觸發(fā)器名[,…n]}其中:ENABLE:?jiǎn)⒂糜|發(fā)器。DISABLE:禁止觸發(fā)器。ALL:指定啟用或禁止表中所有的觸發(fā)器。9.3了解事務(wù)9.3.1事務(wù)事務(wù)是由一系列的數(shù)據(jù)查詢操作或更新操作構(gòu)成,可以看作單個(gè)處理單元。如果某一事務(wù)執(zhí)行,則在該事務(wù)中的所有操作均會(huì)執(zhí)行,記錄在數(shù)據(jù)庫(kù)中,成為持久的組成部分。如果遇到問(wèn)題,則必須全部取消或回滾,所有處理均被清除。9.3.2事務(wù)的特征原子性:事務(wù)必須是原子工作單元,對(duì)于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全部不執(zhí)行。一致性:事務(wù)結(jié)束時(shí),必須使所有數(shù)據(jù)處于一致性狀態(tài)。隔離性:為了提高事務(wù)的吞吐率,大多數(shù)DBMS允許同時(shí)執(zhí)行多個(gè)事務(wù),就像分時(shí)操作系統(tǒng)為了充分利用系統(tǒng)資源,同時(shí)執(zhí)行多個(gè)進(jìn)程一樣。持久性:事務(wù)完成之后,它對(duì)于系統(tǒng)的影響是永久性的,該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。9.3.3事務(wù)模式(1)自動(dòng)提交事務(wù):每條單獨(dú)的語(yǔ)句都是一個(gè)事務(wù)。(2)顯式事務(wù):每個(gè)事務(wù)均以BEGINTRANSACTION語(yǔ)句顯式開始,以COMMIT或ROLLBACK語(yǔ)句顯式結(jié)束。(3)隱式事務(wù):在前一個(gè)事務(wù)完成時(shí)新事務(wù)隱式啟動(dòng),但每個(gè)事務(wù)仍以COMMIT或ROLLBACK語(yǔ)句顯式完成。(4)批處理級(jí)事務(wù):只能應(yīng)用于多個(gè)活動(dòng)結(jié)果集(MARS),在MARS會(huì)話中啟動(dòng)的T-SQL顯式或隱式事務(wù)變?yōu)榕幚砑?jí)事務(wù)。當(dāng)批處理完成時(shí)沒(méi)有提交或回滾的批處理級(jí)事務(wù)自動(dòng)由SQLServer進(jìn)行回滾。9.3.4自動(dòng)事務(wù)自動(dòng)事務(wù)模式為系統(tǒng)默認(rèn)的事務(wù)管理模式。在自動(dòng)事務(wù)模式下,每個(gè)T-SQL語(yǔ)句在成功執(zhí)行完成后,都被自動(dòng)提交。如果遇到錯(cuò)誤,則自動(dòng)回滾該語(yǔ)句。9.3.5顯式事務(wù)顯式事務(wù)由用戶在其中定義事務(wù)的啟動(dòng)和結(jié)束。(1)建立事務(wù)建立事務(wù)的基本語(yǔ)法格式如下:BEGINTRANSACTION[事務(wù)名]該語(yǔ)句標(biāo)記一個(gè)顯式本地事務(wù)的起始點(diǎn)。9.3.5顯式事務(wù)(2)提交事務(wù)提交事務(wù)的基本語(yǔ)法格式如下:COMMITTRANSACTION[事務(wù)名]該語(yǔ)句標(biāo)志一個(gè)成功的顯式事務(wù)(或隱式事務(wù))的完成。(3)回滾事務(wù)回滾事務(wù)的基本語(yǔ)法格式如下:ROLLBACKTRANSACTION

溫馨提示

  • 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)論