版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1觸發(fā)器觸發(fā)器1、觸發(fā)器觸發(fā)器概述概述觸發(fā)器是一種特殊類型的存儲(chǔ)過(guò)程,不由用戶直接調(diào)用。創(chuàng)建觸發(fā)器時(shí)會(huì)對(duì)其進(jìn)行定義,以便在對(duì)特定表或列作特定類型的數(shù)據(jù)修改時(shí)執(zhí)行。CREATEPROCEDURE或CREATETRIGGER語(yǔ)句不能跨越批處理。即存儲(chǔ)過(guò)程或觸發(fā)器始終只能在一個(gè)批處理中創(chuàng)建并編譯到一個(gè)執(zhí)行計(jì)劃中。用觸發(fā)器還可以強(qiáng)制執(zhí)行業(yè)務(wù)規(guī)則。MicrosoftSQLServer提供了兩種主要機(jī)制來(lái)強(qiáng)制業(yè)務(wù)規(guī)則和數(shù)據(jù)完整性:約束和觸發(fā)器。觸發(fā)
2、器是一種特殊類型的存儲(chǔ)過(guò)程,它在指定的表中的數(shù)據(jù)發(fā)生變化時(shí)自動(dòng)生效。喚醒調(diào)用觸發(fā)器以響應(yīng)、UPDATE或語(yǔ)句。觸發(fā)器可以查詢其它表,并可以包含復(fù)雜的TransactSQL語(yǔ)句。將觸發(fā)器和觸發(fā)它的語(yǔ)句作為可在觸發(fā)器內(nèi)回滾的單個(gè)事務(wù)對(duì)待。如果檢測(cè)到嚴(yán)重錯(cuò)誤(例如,磁盤空間不足),則整個(gè)事務(wù)即自動(dòng)回滾。二、觸發(fā)器的優(yōu)點(diǎn)二、觸發(fā)器的優(yōu)點(diǎn)觸發(fā)器可通過(guò)數(shù)據(jù)庫(kù)中的相關(guān)表實(shí)現(xiàn)級(jí)聯(lián)更改;不過(guò),通過(guò)級(jí)聯(lián)引用完整性約束可以更有效地執(zhí)行這些更改觸發(fā)器可以強(qiáng)制比
3、用CHECK約束定義的約束更為復(fù)雜的約束。與CHECK約束不同的是,觸發(fā)器可以引用其它表中的列。例如,觸發(fā)器可以使用另一個(gè)表中的比較插入或更新的數(shù)據(jù),以及執(zhí)行其它操作,如修改數(shù)據(jù)或顯示用戶定義錯(cuò)誤信息。觸發(fā)器也可以評(píng)估數(shù)據(jù)修改前后的表狀態(tài),并根據(jù)其差異采取對(duì)策。一個(gè)表中的多個(gè)同類觸發(fā)器(、UPDATE或)允許采取多個(gè)不同的對(duì)策以響應(yīng)同一個(gè)修改語(yǔ)句。觸發(fā)器是自動(dòng)的:它們?cè)趯?duì)表的數(shù)據(jù)作了任何修改(比如手工輸入或者應(yīng)用程序采取的操作)之后立即
4、被激活。觸發(fā)器可以通過(guò)數(shù)據(jù)庫(kù)中的相關(guān)表進(jìn)行層疊更改。例如,可以在titles表的title_id列上寫(xiě)入一個(gè)刪除觸發(fā)器,以使其它表中的各匹配行采取刪除操作。該觸發(fā)器用title_id列作為唯一鍵,在titleauth、sales及roysched表中對(duì)各匹配行進(jìn)行定位。三、比較觸發(fā)器與約束三、比較觸發(fā)器與約束約束和觸發(fā)器在特殊情況下各有優(yōu)勢(shì)。觸發(fā)器的主要好處在于它們可以包含使用TransactSQL代碼的復(fù)雜處理邏輯。因此,觸發(fā)器可以支
5、持約束的所有功能;但它在所給出的功能上并不總是最好的方法。實(shí)體完整性總應(yīng)在最低級(jí)別上通過(guò)索引進(jìn)行強(qiáng)制,這些索引或是PRIMARYKEY和UNIQUE約束的一部分,或是在約束之外獨(dú)立創(chuàng)建的。假設(shè)功能可以滿足應(yīng)用程序的功能需求,域完整性應(yīng)通過(guò)CHECK約束進(jìn)行強(qiáng)制,而引用完整性(RI)則應(yīng)通過(guò)FEIGNKEY約束進(jìn)行強(qiáng)制。在約束所支持的功能無(wú)法滿足應(yīng)用程序的功能要求時(shí),觸發(fā)器就極為有用。例如:除非REFERENCES子句定義了級(jí)聯(lián)引用操作,
6、否則FEIGNKEY約束只能以與另一列中的值完全匹配的值來(lái)驗(yàn)證列值。3用企業(yè)管理器刪除在企業(yè)管理器中,在表上點(diǎn)右鍵“所有任務(wù)”“管理觸發(fā)器”,選中所要?jiǎng)h除的觸發(fā)器,然后點(diǎn)擊“刪除”。六、重命名觸發(fā)器六、重命名觸發(fā)器用查詢分析器重命名execsp_rename原名稱原名稱新名稱新名稱sp_rename是SQLServer?自帶的一個(gè)存儲(chǔ)過(guò)程,用于更改當(dāng)前數(shù)據(jù)庫(kù)中用戶創(chuàng)建的對(duì)象的名稱,如表名、列表、索引名等。用企業(yè)管理器重命名在表上點(diǎn)右鍵“
7、所有任務(wù)”“管理觸發(fā)器”,選中所要重命名的觸發(fā)器,修改觸發(fā)器語(yǔ)句中的觸發(fā)器名稱,點(diǎn)擊“確定”。四、四、me....INSTEADOF執(zhí)行觸發(fā)器語(yǔ)句,但不執(zhí)行觸發(fā)觸發(fā)器的SQL語(yǔ)句,比如試圖刪除一條記錄時(shí),將執(zhí)行觸發(fā)器指定的語(yǔ)句,此時(shí)不再執(zhí)行語(yǔ)句。例:createtriggerfontblinsteadofasintoLogs...IFUPDATE(列名列名)檢查是否更新了某一列,用于或update,不能用于。例:createtrigge
8、rfontblfupdateasifupdate(status)update(title)sql_statement更新了status或title列ed、d這是兩個(gè)虛擬表,ed保存的是或update之后所影響的記錄形成的表,d保存的是或update之前所影響的記錄形成的表。例:createtriggertbl_ontblfasdeclare@titlevar(200)@title=titlefromdintoLogs(logConten
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 邊沿d 觸發(fā)器介紹
- 主從rs觸發(fā)器,jk觸發(fā)器
- 基本rs觸發(fā)器和d觸發(fā)器
- d觸發(fā)器&雙d觸發(fā)器
- 實(shí)驗(yàn)六 rs觸發(fā)器和d觸發(fā)器
- 觸發(fā)器語(yǔ)句
- 觸發(fā)器總結(jié)
- ppt觸發(fā)器
- d 觸發(fā)器
- 觸發(fā)器格式
- mysql觸發(fā)器
- 觸發(fā)器實(shí)例
- ddl觸發(fā)器
- 觸發(fā)器作業(yè)
- 觸發(fā)器語(yǔ)法
- 觸發(fā)器編程
- d觸發(fā)器原理-d觸發(fā)器電路圖
- 實(shí)驗(yàn)四 基本rs觸發(fā)器和d觸發(fā)器2
- oracle觸發(fā)器3
- after insert觸發(fā)器
評(píng)論
0/150
提交評(píng)論