




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、SQL Sever觸發(fā)器一、觸發(fā)器概述1、觸發(fā)器是一種特殊類型的存儲(chǔ)過(guò)程,當(dāng)表中數(shù)據(jù)被更新時(shí),SQLServer自動(dòng)執(zhí)行觸發(fā)器。2、使用觸發(fā)器可以實(shí)施更為復(fù)雜的數(shù)據(jù)完整性約束。在同一數(shù)據(jù)庫(kù)中的簡(jiǎn)單參照完整性常通過(guò)PRIMARY KEY約束和FOREIGN KEY約束來(lái)實(shí)現(xiàn)。但參照完整性約束不能參照其他數(shù)據(jù)庫(kù)中的對(duì)象; 而觸發(fā)器可跨數(shù)據(jù)庫(kù)的參照完整性約束只能通過(guò)觸發(fā)器來(lái)實(shí)現(xiàn)。CHECK約束只能引用當(dāng)前列(列級(jí)CHECK約束)或當(dāng)前表(表級(jí)CHECK約束)中的列值,而觸發(fā)器則可引用其他表中的列值。 3、CREATE TRIGGER語(yǔ)句建立觸發(fā)器,它說(shuō)明一個(gè)觸發(fā)器的觸發(fā)表。觸發(fā)操作事件名稱和觸發(fā)器所
2、執(zhí)行的操作。觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程,它不允許帶參數(shù),也不能被直接調(diào)用,而只能由系統(tǒng)自動(dòng)觸發(fā)執(zhí)行。 SQL Server提供以下兩種觸發(fā)方式: 后觸發(fā):在觸發(fā)操作(INSERT、 UPDATE或DELETE)執(zhí)行完成,并處理過(guò)所有約束后激活觸發(fā)器,這種方式稱為后觸發(fā)。如果觸發(fā)操作違反約束條件,將導(dǎo)致事務(wù)回滾,這時(shí)就不會(huì)執(zhí)行后觸發(fā)器。但在視圖上不能采用后觸發(fā)方式定義觸發(fā)器。替代觸發(fā):當(dāng)觸發(fā)操作發(fā)生時(shí),不是執(zhí)行的觸發(fā)的SQL語(yǔ)句,從而替代觸發(fā)語(yǔ)句的操作。在表和視圖中,每個(gè)INSERT、UPDATE或DELETE最多可以定義一個(gè)INSTEAD OF觸發(fā)器。數(shù)據(jù)庫(kù)引擎首先創(chuàng)建臨時(shí)inserted表和
3、deleted表,之后,SQL Server停止執(zhí)行通常的操作,而轉(zhuǎn)去執(zhí)行替代觸發(fā)器。二、建立觸發(fā)器在企業(yè)管理其使用CREATE TRIGGER語(yǔ)句創(chuàng)建觸發(fā)器,CREATE TRIGGER格式為:CREATETRIGGER trigger_nameON table | view WITH ENCRYPTION FOR | AFTER | INSTEAD OF INSERT , UPDATE WITH APPEND NOT FOR REPLICATION AS IF UPDATE ( column ) AND | OR UPDATE ( column ) .n |IF ( COLUMNS_UPD
4、ATED ( ) bitwise_operator updated_bitmask ) comparison_operator column_bitmask .n sql_statement .n 在CREATE TRIGGER語(yǔ)句中,triggername為所建立的觸發(fā)器名稱。它必須遵守SQL Server標(biāo)識(shí)符命名規(guī)則,并且在一個(gè)數(shù)據(jù)庫(kù)中,觸發(fā)器名稱必須保持唯一。 table為引發(fā)觸發(fā)器的表名稱,這些表內(nèi)的數(shù)據(jù)更新操作將激活觸發(fā)器。所以,又將這些表稱作觸發(fā)器表。 SQL Server將觸發(fā)器的定義文本存儲(chǔ)在syscomments系統(tǒng)表中,使用WITH ENCRYPTION選項(xiàng)要求SQL S
5、erver對(duì)觸發(fā)器定義文本進(jìn)行加密存儲(chǔ),這樣能夠防止他人從syscomments系統(tǒng)表中直接檢索或調(diào)用系統(tǒng)存儲(chǔ)過(guò)程間接讀取觸發(fā)器定義信息。 FOR和AFTER說(shuō)明CREATE TRIGGER語(yǔ)句所創(chuàng)建的觸發(fā)器為后觸發(fā)器。 INSERT、UPDATE和DELETE定義觸發(fā)器的觸發(fā)操作事件,一個(gè)觸發(fā)器由表中的多個(gè)事件所觸發(fā)時(shí),使用INSERT、 DELETE和UPDATE的組合表示,它們相互之間用逗號(hào)分隔。 NOT FORREPLICATION選項(xiàng)說(shuō)明當(dāng)復(fù)制進(jìn)程修改觸發(fā)表中的數(shù)據(jù)時(shí),不激活所建立的觸發(fā)器。 AS于句中的SQL_statemelnts參數(shù)為單個(gè)SQL語(yǔ)句或語(yǔ)句塊,它定義當(dāng)觸發(fā)事件發(fā)生
6、時(shí),觸發(fā)器所執(zhí)行的操作。在觸發(fā)器定義中不能包含以下TransactSOL語(yǔ)句: CREATE DATABASE、ALTER DATABASE、DROP DATABASE等命令。 在CREATE TRRGGER語(yǔ)句中,如果觸發(fā)事件為INSERT或UPDATE操作,可以使用IF子句進(jìn)一步限制觸發(fā)器的觸發(fā)條件,指出只有當(dāng)指定列的列值被修改時(shí),才激活觸發(fā)器,從而創(chuàng)建條件插入觸發(fā)器或條件修改觸發(fā)器。 在IF子句中可以使用以下兩種格式指出激活條件觸發(fā)器的被修改列 UPDATE (列名)AND OR UPDATE(列名) n和 (COLUMNS_UPDATE ()位運(yùn)算符updated_bitmask) 第
7、一種方式直接指定激活觸發(fā)器的被修改列名,而第二種方式則用列的位掩碼和比較表達(dá)式的方式說(shuō)明激活觸發(fā)器的被修改列。其中COLUMNS為觸發(fā)表中的列名,它說(shuō)明這一列中的數(shù)據(jù)被INSERT或UPDATE操作改變時(shí)激活觸發(fā)器。 column所指定列可以是SQL Server支持的所有數(shù)據(jù)類型,但不能為計(jì)算列。例8.1:創(chuàng)建UPDATE觸發(fā)器Create trigger lsq1_trigon sfor updateasprint the table s was updated執(zhí)行下述修改語(yǔ)句:update sset sname=原料公司分公司where sno=s1系統(tǒng)自動(dòng)激發(fā)觸發(fā)器,因此將返回信息“t
8、he table s was updated”。例8.2:創(chuàng)建INSERT觸發(fā)器Create trigger lsq2_trigon sfor insertasprint the table s was inserted執(zhí)行下述插入語(yǔ)句:insert into svalues(s13,西安印刷廠,79,咸寧路123號(hào))例8.3:創(chuàng)建DELETE觸發(fā)器create trigger lsq_deleteon sfor deleteasdelete sprint the table s was deleted當(dāng)執(zhí)行delete 會(huì)出現(xiàn)“the table s wasdeleted”8.2 修改觸發(fā)器
9、定義使用ALTER TRIGGER可以更改原來(lái)由 CREATE TRIGGER 語(yǔ)句創(chuàng)建的觸發(fā)器定義。有關(guān) ALTER TRIGGER 語(yǔ)句所用參數(shù)的更多信息,請(qǐng)參見CREATE TRIGGER。 如:ALTER TRIGGER lsq1_trig on s8.3 刪除觸發(fā)器定義如果不再需要某個(gè)觸發(fā)器,可以將其刪除。通過(guò)使用DROP TRIGGER語(yǔ)句,即可從從當(dāng)前數(shù)據(jù)庫(kù)表中刪除觸發(fā)器。 DROPTRIGGER語(yǔ)句的命令格式為:DROP TRIGGER觸發(fā)器名8.4 查看觸發(fā)器若要查看某一特定表上現(xiàn)有的觸發(fā)器,請(qǐng)使用命令l sp_helptrigger 數(shù)據(jù)表名例如:sp_helptrigge
10、r s命令用來(lái)查看S數(shù)據(jù)表中已經(jīng)建立好的觸發(fā)器。 使用命令:sp_helptext 觸發(fā)器名,可以查看已經(jīng)建好的觸發(fā)器代碼。 圖22 觸發(fā)器屬性窗口如命令:sp_helptext lsq1_trig,查看已經(jīng)建好的觸發(fā)器lsq1_trig中的代碼 其實(shí)無(wú)論是建立、修改、刪除還是查看觸發(fā)器、觸發(fā)器代碼,均可以通過(guò)SQL Sever的“企業(yè)管理器”實(shí)現(xiàn),具體的步驟為:l右鍵單擊數(shù)據(jù)表名,在彈出的快捷菜單中選擇“所有任務(wù)”,執(zhí)行“管理觸發(fā)器”命令,如圖22。l在名稱框中選擇已經(jīng)存在的觸發(fā)器過(guò)程或新建一個(gè)新的觸發(fā)器。l若為新建一個(gè)觸發(fā)器,則在“文本”中顯示定義觸發(fā)器的模板,若選擇一個(gè)已經(jīng)存在的觸發(fā)器名,則在“文本”中顯示定義觸發(fā)器的代碼,可以進(jìn)行任意編輯,實(shí)現(xiàn)修改的目的。l也可以單擊“刪除”按鈕,則刪除一個(gè)觸發(fā)器的定義。8.5 觸發(fā)器的啟用和禁用通過(guò)Alter table 語(yǔ)句,可以啟用或禁用觸發(fā)器,而無(wú)需從表中刪除觸發(fā)器的定義。由于每個(gè)觸發(fā)器都是在某一表中定義的,因此可以使用AlterTable 語(yǔ)句,而不是使用Alter
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 穴位水療腎小球腎炎-洞察及研究
- 湖南科技職業(yè)學(xué)院《電視藝術(shù)概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 唐山師范學(xué)院《公共藝術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 晉中學(xué)院《社科中文工具書和信息工具應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 大興安嶺職業(yè)學(xué)院《有氧教學(xué)與訓(xùn)練(三)》2023-2024學(xué)年第一學(xué)期期末試卷
- 寶雞三和職業(yè)學(xué)院《牛生產(chǎn)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 基于學(xué)習(xí)的運(yùn)動(dòng)控制-洞察及研究
- 安吉特色團(tuán)建活動(dòng)方案
- 家庭建材活動(dòng)方案
- 安檢比武活動(dòng)方案
- 2023年國(guó)開(中央電大)04114《會(huì)計(jì)學(xué)概論》題庫(kù)及標(biāo)準(zhǔn)答案
- 保安交通指揮手勢(shì)培訓(xùn)
- 中建測(cè)評(píng)2024二測(cè)題庫(kù)及答案
- 拉薩餐飲市場(chǎng)分析報(bào)告
- Filemaker數(shù)據(jù)庫(kù)使用指南知識(shí)分享
- 國(guó)開《Windows網(wǎng)絡(luò)操作系統(tǒng)管理》形考任務(wù)四
- 人體器官有償捐贈(zèng)流程
- 《運(yùn)動(dòng)生理學(xué)》期末考試復(fù)習(xí)題庫(kù)(含答案)
- 國(guó)開04623- 會(huì)計(jì)信息系統(tǒng)機(jī)考復(fù)習(xí)資料
- 第七次課第四章證據(jù)的學(xué)理分類
- 學(xué)生人力資源(董克用)復(fù)習(xí)題匯總
評(píng)論
0/150
提交評(píng)論