實(shí)驗(yàn)附錄二三_存儲(chǔ)觸發(fā)_第1頁
實(shí)驗(yàn)附錄二三_存儲(chǔ)觸發(fā)_第2頁
實(shí)驗(yàn)附錄二三_存儲(chǔ)觸發(fā)_第3頁
實(shí)驗(yàn)附錄二三_存儲(chǔ)觸發(fā)_第4頁
實(shí)驗(yàn)附錄二三_存儲(chǔ)觸發(fā)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、附錄二SQL Server存儲(chǔ)過程客戶/服務(wù)器數(shù)據(jù)庫與傳統(tǒng)的數(shù)據(jù)庫結(jié)構(gòu)的一個(gè)很重要的區(qū)別是,在傳統(tǒng)的數(shù)據(jù)庫中只存放數(shù)據(jù),所有的應(yīng)用程序都在用戶端,都與用戶實(shí)際運(yùn)行的應(yīng)用程序捆綁在一起;而在客戶/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫中,在數(shù)據(jù)庫中還可以存放程序,即存儲(chǔ)過程。 (一)基本概念 存儲(chǔ)過程是經(jīng)過預(yù)編譯T-SQL語句的集合,大多數(shù)系統(tǒng)存儲(chǔ)過程以sp_作為過程名稱的前綴。系統(tǒng)存儲(chǔ)過程存放在master數(shù)據(jù)庫中,歸系統(tǒng)管理員所有,但其中很多過程可以運(yùn)行在任意數(shù)據(jù)庫中。存儲(chǔ)過程是對(duì)數(shù)據(jù)庫管理系統(tǒng)功能的有力擴(kuò)充。利用存儲(chǔ)過程我們可以避免在網(wǎng)絡(luò)上傳輸大量無用的信息或原始數(shù)據(jù),只需要傳輸調(diào)用存儲(chǔ)過程的指令和數(shù)據(jù)庫服務(wù)

2、器返回的處理結(jié)果。不使用存儲(chǔ)過程時(shí),所有的數(shù)據(jù)處理都在客戶端完成;而使用存儲(chǔ)過程時(shí),可以使數(shù)據(jù)處理在服務(wù)器端完成。 客戶端應(yīng)用 (不使用存儲(chǔ)過程)Start transactionINSERT dataUPDATE dataDELETE dataEnd transaction·DBMSServerStart transactionCallStored procedureEnd transactionDBMSServerprocedureINSERT dataUPDATE dataDELETE data(使用存儲(chǔ)過程)客戶端應(yīng)用 (二)創(chuàng)建和執(zhí)行存儲(chǔ)過程 CREATE PROCedur

3、e <過程名> (<參數(shù), >) AS <SQL語句>比如,我們創(chuàng)建一個(gè)最簡單的存儲(chǔ)過程 CREATE PROCedure sp_getemp ASSELECT * FROM 職工 若我們只選擇工資值大于某個(gè)值的職工記錄,可以使用帶參數(shù)的存儲(chǔ)過程CREATE PROCedure sp_getemp( salary) ASSELECT * FROM職工 WHERE 工資> salary 創(chuàng)建存儲(chǔ)過程中的<SQL語句>可以是一組T-SQL語句,并可以含有流程控制等語句。存儲(chǔ)過程可以嵌套,即在一個(gè)存儲(chǔ)過程中可以調(diào)用另外一個(gè)存儲(chǔ)過程。存儲(chǔ)過程一般用

4、來完成數(shù)據(jù)查詢和數(shù)據(jù)處理操作,所以在存儲(chǔ)過程中不可以使用創(chuàng)建數(shù)據(jù)庫對(duì)象的語句。 執(zhí)行存儲(chǔ)過程的語句 EXECute <返回狀態(tài)碼>= <存儲(chǔ)過程名> <參數(shù)>=<值>|<變量> (三)存儲(chǔ)過程的返回值和狀態(tài)信息 無論什么時(shí)候執(zhí)行存儲(chǔ)過程,總要返回一個(gè)結(jié)果碼,用以指示存儲(chǔ)過程的執(zhí)行狀態(tài)。如果存儲(chǔ)過程執(zhí)行成功,返回的結(jié)果碼是0;如果存儲(chǔ)過程執(zhí)行失敗,返回的結(jié)果碼一般是一個(gè)負(fù)數(shù),它和失敗的類型有關(guān)。我們?cè)趧?chuàng)建存儲(chǔ)過程時(shí),也可以定義自己的狀態(tài)碼和錯(cuò)誤信息。比如: CREATE PROCedure sp_getemp(salary) ASIF

5、salary=NULLBEGINPRINT “必須提供一個(gè)數(shù)值作參數(shù)!”ENDRETURN 13IF NOT EXISTS(SELECT*FROM職工 WHERE 工資>salary)BEGINPRINT“沒有滿足條件的記錄!”ENDRETURN-103SELECT*FROM職工WHERE工資>salary 作為一般的原則,在編寫存儲(chǔ)過程時(shí),應(yīng)該能夠預(yù)測用戶在執(zhí)行存儲(chǔ)過程時(shí)可能出現(xiàn)的錯(cuò)誤,并在存儲(chǔ)過程中納入有意義的錯(cuò)誤信息或提示信息。 (四)要用好存儲(chǔ)過程 存儲(chǔ)過程是客戶/服務(wù)器機(jī)制的一個(gè)重要組成部分,如果使用客戶/服務(wù)器機(jī)制的數(shù)據(jù)庫管理系統(tǒng),但是不理解存儲(chǔ)過程或沒有充分利用存儲(chǔ)過

6、程,那將使客戶/服務(wù)器機(jī)制的功能大打折扣,使系統(tǒng)的整體性能可能降低很多。存儲(chǔ)過程的管理還可以納入安全控制的范疇,也就是說存儲(chǔ)過程的使用可以授權(quán)。利用存儲(chǔ)過程可以使困難的或復(fù)雜的數(shù)據(jù)庫活動(dòng)自動(dòng)化,提高安全性和限制對(duì)數(shù)據(jù)庫的存取。另外,根據(jù)客戶對(duì)查詢和特定環(huán)境資源的要求,存儲(chǔ)過程可以改善應(yīng)用程序的響應(yīng)時(shí)間。 附錄三 觸發(fā)器及其用途(一)基本概念 觸發(fā)器可以看作是一類特殊的存儲(chǔ)過程,它在滿足某個(gè)特定條件時(shí)自動(dòng)觸發(fā)執(zhí)行,存儲(chǔ)過程和觸發(fā)器同是提高數(shù)據(jù)庫服務(wù)器性能的有力工具。 觸發(fā)器是為表上的更新、插入、刪除操作定義的,也就是說當(dāng)表上發(fā)生更新、插入或刪除操作時(shí)觸發(fā)器將執(zhí)行。在一個(gè)表上,一種類型的觸發(fā)器只能

7、定義一個(gè)。比如,當(dāng)刪除操作發(fā)生時(shí),只能有一個(gè)觸發(fā)器執(zhí)行。觸發(fā)器的主要作用是實(shí)現(xiàn)由主鍵和外鍵所不能保證的復(fù)雜的參照完整性和數(shù)據(jù)的一致性。除此之外,觸發(fā)器還有其他許多不同的功能。(1)強(qiáng)化約束(Enforce Restriction)觸發(fā)器可以偵測數(shù)據(jù)庫內(nèi)的操作,從而不允許數(shù)據(jù)庫中未經(jīng)許可的更新和變化。(2)級(jí)聯(lián)運(yùn)行(Cascaded Operation)觸發(fā)器可以偵測數(shù)據(jù)庫內(nèi)的操作,并自動(dòng)地級(jí)聯(lián)影響整個(gè)數(shù)據(jù)庫的各項(xiàng)內(nèi)容。例如,某個(gè)表上的觸發(fā)器包含對(duì)另外一個(gè)表的數(shù)據(jù)操作(如刪除、更新、插入),而該操作又導(dǎo)致該表上的觸發(fā)器被觸發(fā)。(3)存儲(chǔ)過程的調(diào)用(Stored Procedure Invocat

8、ion)為了響應(yīng)數(shù)據(jù)庫更新,觸發(fā)器可以調(diào)用一個(gè)或多個(gè)存儲(chǔ)過程,甚至可以通過外部過程的調(diào)用而在DBMS之外進(jìn)行操作。由此可見,觸發(fā)器可以解決高級(jí)形式的業(yè)務(wù)規(guī)則或復(fù)雜行為限制以及實(shí)現(xiàn)定制記錄等問題。例如,觸發(fā)器能夠找出某一表在數(shù)據(jù)修改前后狀態(tài)發(fā)生的差異,并根據(jù)這種差異執(zhí)行一定的操作。此外一個(gè)表的同一類型(INSERT、UPDATE、DELETE)的多個(gè)觸發(fā)器能夠?qū)ν环N數(shù)據(jù)操作采取多種不同的操作。觸發(fā)器可以用于數(shù)據(jù)參照完整性和以下一些場合: 1觸發(fā)器可以通過級(jí)聯(lián)的方式對(duì)相關(guān)的表進(jìn)行修改。比如,對(duì)父表的修改,可以引起對(duì)子孫表的一系列修改,從而保證數(shù)據(jù)的一致性和完整性。 2觸發(fā)器可以禁止或撤消違反參照

9、完整性的修改。 3觸發(fā)器可以強(qiáng)制用比CHECK約束定義更加復(fù)雜的限制。觸發(fā)器也是一個(gè)數(shù)據(jù)庫對(duì)象。一個(gè)觸發(fā)器和三部分內(nèi)容有關(guān):激活觸發(fā)器的表、激活觸發(fā)器的數(shù)據(jù)修改語句和觸發(fā)器要采取的動(dòng)作。 (二)觸發(fā)器的種類SQL Server 2000 支持兩種類型的觸發(fā)器:AFTER觸發(fā)器和INSTEAD OF觸發(fā)器。其中,AFTER觸發(fā)器即為SQL Server 2000版本以前所介紹的觸發(fā)器;該類型觸發(fā)器要求只有執(zhí)行某一操作(INSERT、UPDATE、DELETE)之后,觸發(fā)器才被觸發(fā),且只能在表上定義??梢詾獒槍?duì)表的同一操作定義多個(gè)觸發(fā)器。AFTER觸發(fā)器可以定義哪一個(gè)觸發(fā)器被最先觸發(fā),哪一個(gè)被最后

10、觸發(fā),通常使用系統(tǒng)過程sp_settriggerorder來完成此任務(wù)。INSTEAD OF觸發(fā)器表示并不執(zhí)行其所定義的操作(INSERT、UPDATE、DELETE),而僅是執(zhí)行觸發(fā)器本身。既可在表上定義INSTEAD OF觸發(fā)器,也可以在視圖上定義INSTEAD OF觸發(fā)器,但對(duì)同一操作只能定義一個(gè)INSTEAD OF觸發(fā)器。(三)創(chuàng)建觸發(fā)器上面介紹了有關(guān)觸發(fā)器的概念、作用和一些基本問題,下面我們將分別介紹在SQL Server中如何用SQL Server管理工具Enterprise Manager和Transaction-SQL來創(chuàng)建觸發(fā)器。在創(chuàng)建觸發(fā)器以前必須考慮到以下幾個(gè)方面: (1

11、)CREATE TRIGGER語句必須是批處理的第一個(gè)語句。 (2)表的所有者具有創(chuàng)建觸發(fā)器的缺省權(quán)限,表的所有者不能把該權(quán)限傳給其他用戶。 (3)觸發(fā)器的數(shù)據(jù)庫對(duì)象,其命名必須符合命名規(guī)則。 (4)盡管在觸發(fā)器的SQL語句中可以參照其他數(shù)據(jù)庫中的對(duì)象,但是 觸發(fā)器只能創(chuàng)建在當(dāng)前數(shù)據(jù)庫中。 (5)雖然觸發(fā)器可以參照視圖或臨時(shí)表,但不能在視圖或臨時(shí)表上創(chuàng)建觸發(fā)器,只能在基表或在創(chuàng)建視圖的表上創(chuàng)建觸發(fā)器。 (6)一個(gè)觸發(fā)器只能對(duì)應(yīng)一個(gè)表,這是由觸發(fā)器的機(jī)制決定的。 (7)盡管TRUNCATE TABLE語句如同沒有WHERE從句的DELETE語句,但是由于TRUNCATE TABLE語句沒有被記入

12、日志,所以該語句不能觸發(fā)DELETE型觸發(fā)器。 (8)WRITETEXT語句不能觸發(fā)INSERT或UPDATE型的觸發(fā)器。創(chuàng)建一個(gè)觸發(fā)器時(shí),必須指定觸發(fā)器的名字、在哪一個(gè)表上定義觸發(fā)器、激活觸發(fā)器的修改語句,如INSERT、DELETE、UPDATE,當(dāng)然兩個(gè)或三個(gè)不同的修改語句也可以觸發(fā)同一個(gè)觸發(fā)器,如INSERT和UPDATE語句能激活同一個(gè)觸發(fā)器。1用CREATE TRIGGER命令創(chuàng)建觸發(fā)器 可用CREATE TRIGGER命令創(chuàng)建觸發(fā)器,其語法規(guī)則如下: CREATE TRIGGER trigger_name ONtable|view SITH ENCRYPTION FOR|AFTE

13、R|INSTEAD OF DELETE INSERT , UPDATE WITH APPEND NOT FOR REPLICATION AS IF UPDATE(column) AND|ORUPDATE(column) n | IF (COLUMNS_UPDATED() bitwise_operator updated_bitmask) comparison_operatorcolumn_bitmask n sql_statementn (1)trigger_name是用戶要?jiǎng)?chuàng)建的觸發(fā)器的名字。觸發(fā)器的名字必須符合SQL Server的命名規(guī)則,且其名字在當(dāng)前數(shù)據(jù)庫中必須是唯一的。 (2)ta

14、blelview是與用戶創(chuàng)建的觸發(fā)器相關(guān)聯(lián)的表的名字或視圖的名稱,并且此表或視圖必須已經(jīng)存在。 (3)WITH ENCRYPTION表示對(duì)包含有CREATE TRIGGER 文本的syscomments表進(jìn)行加密。 (4)AFTER表示只有在執(zhí)行了指定的操作(INSERT、DELETE、UPDATE)之后觸發(fā)器才被激活(執(zhí)行觸發(fā)器中的SQL語句)。若使用關(guān)鍵字FOR,則表示觸發(fā)器為AFTER觸發(fā)器,且該類型觸發(fā)器只能在表上創(chuàng)建。 (5)INSTEAD OF請(qǐng)參看INSTEAD OF觸發(fā)器。 (6)DELETE , INSERT , UPDATE關(guān)鍵字用來指明哪種數(shù)據(jù)操作將激活觸發(fā)器。至少要指明

15、其中的一個(gè)選項(xiàng),在觸發(fā)器的定義中,三者的順序不受限制,各選項(xiàng)要用逗號(hào)隔開。(7)WITH APPEND表明增加另外一個(gè)已存在的觸發(fā)器。只有在兼容性水平(指某一數(shù)據(jù)庫行為與以前版本的SQL Server兼容程度)不大于65時(shí)才使用該選項(xiàng)。 (8)NOT FOR REPLICATION表明當(dāng)復(fù)制、處理和修改與觸發(fā)器相關(guān)聯(lián)的表時(shí),觸發(fā)器不能被執(zhí)行。(9)AS是觸發(fā)器將要執(zhí)行的動(dòng)作。 (10)sql_statement是包含在觸發(fā)器中的條件語句或處理語句。觸發(fā)器的條件語句定義了另外的標(biāo)準(zhǔn)來決定將被執(zhí)行的INSERT、DELETE、UPDATE語句是否激活觸發(fā)器。(11)IF UPDATE(column

16、)用來測定對(duì)某一確定列是插入操作還是更新操作,但不與刪除操作用在一起。 (12)IF(COLUMNS_UPDATED())僅在INSERT和UPDATE類型的觸發(fā)器中使用,用其來檢查所涉及的列是被更新還是被插入。 (13)bitwise_operatorj是在比較中使用的位邏輯運(yùn)算符。 (14)updated_itmask是那些被更新或插入的列的整形位掩碼。例如,如果表T包括C1,C2,C3,C4,C5五列。為了確定是否只有C2列被修改可用2來做位掩碼;如果想確定C1,C2,C3,C4是否被修改,可用14來做位掩碼。 (15)comparison_operator是一個(gè)比較操作符。用“=”表示

17、檢查在updated_bitmask中定義的所有列是否都被更新,用“>”表示檢查在updated_bitmask中定義的某些列是否被更新。 (16)column_bitmask指被更新的列的位掩碼。從以上語句可以看出,一個(gè)表最多可以有三個(gè)觸發(fā)器:一個(gè)插入(INSERT)觸發(fā)器、一個(gè)更新(UPDATE)觸發(fā)器、一個(gè)刪除(DELETE)觸發(fā)器。一個(gè)觸發(fā)器只能應(yīng)用到一個(gè)表上,但一個(gè)觸發(fā)器可以包含很多動(dòng)作,可以執(zhí)行很多功能。觸發(fā)器只能建立在基本表上,不可以建立在視圖或臨時(shí)表上。例 創(chuàng)建一個(gè)觸發(fā)器,當(dāng)向s表中插入一條記錄時(shí),自動(dòng)顯示s表中的記錄。 CREATE TRIGGER Change_Dis

18、play On s FOR INSERT,UPDATE,DELETE AS SELECT * FROM s該觸發(fā)器建立完畢后,當(dāng)執(zhí)行如下操作時(shí),將會(huì)顯示s數(shù)據(jù)表中的全部記錄。EXECUTE InsertRecordDefa sno=S11,sn=張建峰,age=17,sex=男2用Enterprise Manger創(chuàng)建觸發(fā)器的步驟如下(1)啟動(dòng)Enterprise Manager,登錄到要使用的服務(wù)器。(2)在Enterprise Manager的左窗格中,展開要?jiǎng)?chuàng)建觸發(fā)器的數(shù)據(jù)庫文件夾,單擊“表”文件夾,此時(shí)在右窗格中顯示該數(shù)據(jù)庫的所有表。(3)在右窗格中,右擊要?jiǎng)?chuàng)建觸發(fā)器的數(shù)據(jù)表,在彈出的

19、快捷菜單中,將鼠標(biāo)指向“所有任務(wù)”,在出現(xiàn)的下一級(jí)子菜單中選擇“管理觸發(fā)器”菜單項(xiàng),此時(shí)會(huì)出現(xiàn)“觸發(fā)器屬性”對(duì)話框。(4)在“名稱”下拉框中選擇“<新建>”,“文本”編輯框中輸入觸發(fā)器的文本命令。(5)單擊“檢查語法”按鈕,檢查語句是否正確。(6)單擊“應(yīng)用”按鈕,在“名稱”下拉框列表中會(huì)顯示新創(chuàng)建的觸發(fā)器名字。(四)觸發(fā)器的原理從以上的介紹中我們可以看出觸發(fā)器具有強(qiáng)大的功能,那么SQL Server是如何用觸發(fā)器來完成這些任務(wù)的呢?下面我們將對(duì)其工作原理及實(shí)現(xiàn)做詳細(xì)介紹。 每個(gè)觸發(fā)器有兩個(gè)特殊的表:插入表和刪除表,分別為inserted和deleted。這兩個(gè)表是邏輯表,并且這兩

20、個(gè)表都是由系統(tǒng)管理的,存儲(chǔ)在內(nèi)存中,因此不允許用戶直接對(duì)其修改。這兩個(gè)表的結(jié)構(gòu)總是與被該觸發(fā)器作用的表有相同的表結(jié)構(gòu)。這兩個(gè)表是動(dòng)態(tài)駐留在內(nèi)存中的,當(dāng)觸發(fā)器工作完成,這兩個(gè)表也被刪除。這兩個(gè)表主要保存因用戶操作而被影響到的原數(shù)據(jù)值或新數(shù)據(jù)值。另外,這兩個(gè)表是只讀的,即用戶不能向這兩個(gè)表寫入內(nèi)容,但可以引用表中的數(shù)據(jù)。例如可用如下語句查看DELETED表中的信息:select * from deleted 1插入表的功能對(duì)一個(gè)定義了插入類型觸發(fā)器的表來講,一旦對(duì)該表執(zhí)行了插入(INSERT)操作,那么對(duì)該插入的所有行來說,都有一個(gè)相應(yīng)的副本級(jí)存放到插入表(inserted)中,即插入表就是用來存

21、儲(chǔ)原插入的內(nèi)容。2刪除表的功能對(duì)一個(gè)定義了刪除類型觸發(fā)器的表來講,一旦對(duì)該表執(zhí)行了刪除(DELETE)操作,則將所有的刪除行存放至刪除表(deleted)中。這樣做的目的是,一旦強(qiáng)迫觸發(fā)器中止的語句被執(zhí)行時(shí),刪除的那些行可以從刪除表中得以還原。需要強(qiáng)調(diào)的是,更新(UPDATE)操作包括兩個(gè)部分,即先將更新的內(nèi)容去掉,然后將新值插入。因此,對(duì)一個(gè)定義了更新類型觸發(fā)器的表來講,當(dāng)執(zhí)行更新操作時(shí),在刪除表中存放了舊值,然后在插入表中存放新值。由于觸發(fā)器僅當(dāng)被定義的操作被執(zhí)行時(shí)才被激活,即觸發(fā)器僅在執(zhí)行插入、刪除和更新操作時(shí)才被執(zhí)行。每條SQL語句僅能激活觸發(fā)器一次,可能存在一條語句影響多條記錄的情況

22、。在這種情況下就需要變量rowcount的值,該變量存儲(chǔ)了一條SQL語句執(zhí)行后所影響的記錄數(shù)。一般來說,首先要用IF語句測試rowcount的值,以確定后面的語句是否執(zhí)行。 3插入視圖和刪除視圖當(dāng)在定義了觸發(fā)器的表上發(fā)生修改操作時(shí)會(huì)自動(dòng)派生出兩個(gè)視圖,一個(gè)是插入視圖,一個(gè)是刪除視圖。當(dāng)在表上發(fā)生插入操作時(shí),新插入的行將出現(xiàn)在插入視圖中;當(dāng)在表上發(fā)生刪除操作時(shí),被刪除的舊行將出現(xiàn)在刪除視圖中。而更新的實(shí)現(xiàn)過程是先刪除舊行,然后再插入新行。這里的插入視圖和刪除視圖只是在觸發(fā)器內(nèi)可用,一旦觸發(fā)器完成任務(wù),這兩個(gè)視圖將不再存在。這兩個(gè)視圖的名稱是 inserted和 deleted,它們和原表具有完全

23、相同的結(jié)構(gòu)。(五)管理觸發(fā)器如果要顯示作用于表上的觸發(fā)器究竟對(duì)表有哪些操作,必須查看觸發(fā)器信息。在SQL Server中,有多種方法查看觸發(fā)器信息。接下來,我們將介紹兩種常用的方法,即通過SQL Server 的管理工具Enterprise Manager 以及系統(tǒng)存儲(chǔ)過程sp_help、sp_helptext和sp_depends來查看觸發(fā)器信息。 1使用Enterprise Manager顯示觸發(fā)器信息使用Enterprise Manager顯示觸發(fā)器信息,步驟如下。 (1)啟動(dòng)Enterprise Manager,登錄到要使用的服務(wù)器。 (2)在Enterprise Manager的左窗

24、格中,展開要?jiǎng)?chuàng)建觸發(fā)器的數(shù)據(jù)庫文件夾, 單擊“表”文件夾,此時(shí)在右窗格中顯示該數(shù)據(jù)庫的所有表。 (3)在右窗格中,右擊要?jiǎng)?chuàng)建觸發(fā)器的數(shù)據(jù)表,在彈出的快捷菜單中,將鼠標(biāo)指向“所有任務(wù)”,在出現(xiàn)的下一級(jí)子菜單中選擇“管理觸發(fā)器”菜單項(xiàng),出現(xiàn)“觸發(fā)器屬性”對(duì)話框。(4)在“名稱”下拉列表中選擇所要查看的觸發(fā)器的名稱,在“文本”編中顯示出該觸發(fā)器的文本命令。 2.使用系統(tǒng)存儲(chǔ)過程查看觸發(fā)器存儲(chǔ)過程sp_help、sp_help text 和 sp_depe nds分別 提供有關(guān)觸發(fā)器的不同信息。下面我們將分別對(duì)其進(jìn)行介紹。(1)sp_help通過該系統(tǒng)過程,可以了解觸發(fā)器的一般信息,如觸發(fā)器的名字、屬

25、性、類型、創(chuàng)建時(shí)間。使用sp_help系統(tǒng)過程的命令格式為:sp_help觸發(fā)器名字例 查看我們已經(jīng)建立的change_display觸發(fā)器。sp_helpchange_display (2) sp_helptext通過sp_helptext能夠查看觸發(fā)器的正文信息,其語法格式為: sp_helptext觸發(fā)器名例 查看我們已經(jīng)建立的chang_display觸發(fā)器的命令文本。sp_helptextchange_display (3) sp_depends通過sp_depends能夠查看指定觸發(fā)器所引用的表或指定的表涉及到的所有觸發(fā)器。其語法形式如下:sp_depends 觸發(fā)器名字sp_de

26、pends表名例 查看我們已經(jīng)建立的change-display觸發(fā)器所涉及的表。sp_dependschange_display注意:用戶必須在當(dāng)前數(shù)據(jù)庫中查看觸發(fā)器的信息,而且被查看的觸發(fā)器必須已經(jīng)被創(chuàng)建。3.修改、刪除觸發(fā)器(1)修改觸發(fā)器通過Enterprise Manager Alert trigger命令和sp_rename命令,可以修改觸發(fā)器的名字和正文。 使用sp_rename命令修改觸發(fā)器的名字。sp_rename命令的語法格式為:sp_rename oldname, newname,oldname為觸發(fā)器原來的名稱,newname為觸發(fā)器的新名稱。通過Enterprise

27、Manager修改觸發(fā)器正文。通過Enterprise Manager修改觸發(fā)器正文的操作步驟與查看觸發(fā)器信息一樣。修改完觸發(fā)器后要使用“檢查語法”選項(xiàng)對(duì)語句進(jìn)行檢查。通過Alert trigger命令修改觸發(fā)器正文。 Alert trigger命令的語法格式為: ALTER TRIGGER trigger_name ON(table|view) WITH ENCRYPTION FOR|AFTER|INSTEAD OFDELETE,INSERT,UPDATE NOT FOR REPLICATION AS sql_statementn | FOR|AFTER|INSTEAD OFINSERT,UPDATE NOT FOR REPLICATION ASIF UP DATE column AND|ORUPDATE column n |IF COLUMNS_UPDATED bitwise_operatorupdated_bitmask comparison_operatorcolumn_bitmaskn sql_statementn 其中各參數(shù)或保留字的含義參看“創(chuàng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論