




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、網(wǎng)絡(luò)數(shù)據(jù)庫開發(fā)技術(shù)存儲過程和觸發(fā)器 張蕾1什么是存儲過程SQL Server提供了一種方法,它可以將一些固定的操作集中起來由SQL Server數(shù)據(jù)庫服務(wù)器來完成,以實現(xiàn)某個任務(wù),這種方法就是存儲過程。2存儲過程的類型 (1) 系統(tǒng)存儲過程 系統(tǒng)存儲過程是由系統(tǒng)提供的存儲過程,作為命令執(zhí)行各種操作。 (2) 本地存儲過程 本地存儲過程是指在用戶數(shù)據(jù)庫中創(chuàng)建的存儲過程,這種存儲過程完成特定數(shù)據(jù)庫操作任務(wù),其名稱不能以sp_為前綴。(3) 臨時存儲過程 臨時存儲過程屬于本地存儲過程。如果本地存儲過程的名稱前面有一個“#”,該存儲過程就稱為局部臨時存儲過程,這種存儲過程只能在一個用戶會話中使用。(4
2、) 遠(yuǎn)程存儲過程 遠(yuǎn)程存儲過程指從遠(yuǎn)程服務(wù)器上調(diào)用的存儲過程。(5) 擴(kuò)展存儲過程 在SQL Server環(huán)境之外執(zhí)行的動態(tài)鏈接庫稱為擴(kuò)展存儲過程,其前綴是sp_。使用時需要先加載到SQL Server系統(tǒng)中,并且按照使用存儲過程的方法執(zhí)行。3存儲過程使用存儲過程的優(yōu)點: (1) 存儲過程在服務(wù)器端運行,執(zhí)行速度快。 (2) 存儲過程執(zhí)行一次后,其執(zhí)行規(guī)劃就駐留在高速緩沖存儲器,在以后的操作中,只需從高速緩沖存儲器中調(diào)用已編譯好的二進(jìn)制代碼執(zhí)行,提高了系統(tǒng)性能。 (3) 確保數(shù)據(jù)庫的安全。使用存儲過程可以完成所有數(shù)據(jù)庫操作,并可通過編程方式控制上述操作對數(shù)據(jù)庫信息訪問的權(quán)限。 (4) 自動完成
3、需要預(yù)先執(zhí)行的任務(wù)。存儲過程可以在系統(tǒng)啟動時自動執(zhí)行,而不必在系統(tǒng)啟動后再進(jìn)行手工操作,大大方便了用戶的使用,可以自動完成一些需要預(yù)先執(zhí)行的任務(wù)。4函數(shù)有返回值,而存儲過程的返回值僅說明該過程是否成功完成。存儲過程與函數(shù)的比較函數(shù)與存儲過程基本類似,調(diào)用時函數(shù)要用表達(dá)式方式,而存儲過程不能直接調(diào)用,必須采用“EXEC 存儲過程名”或“CALL 存儲過程名”。5創(chuàng)建存儲過程 在SQL Server中,可以使用三種方法創(chuàng)建存儲過程 :使用創(chuàng)建存儲過程向?qū)?chuàng)建存儲過程。利用SQL Server 企業(yè)管理器創(chuàng)建存儲過程。使用Transact-SQL語句中的CREATE PROCEDURE命令創(chuàng)建存儲過
4、程。 6用戶存儲過程的創(chuàng)建與執(zhí)行 在用戶存儲過程的定義中不能使用下列對象創(chuàng)建語句:CREATE VIEWCREATE DEFAULT CREATE RULE 1通過SQL命令創(chuàng)建和執(zhí)行存儲過程如果要通過SQL命令定義一個存儲過程查詢XSCJ數(shù)據(jù)庫中每個同學(xué)各門功課的成績定義如下存儲過程USE XSCJGoCREATE PROCEDURE student_gradeAS SELECT XS.學(xué)號,XS.姓名,KC.課程名, XS_KC.成績FROM XS,XS_KC,KCWHERE XS.學(xué)號=XS_KC.學(xué)號 AND XS_KC.課程號=KC.課程號Go7存儲過程 調(diào)用存儲過程EXEC stu
5、dent_gradeGO1) 創(chuàng)建存儲過程語法格式:CREATE PROC | PROCEDURE procedure_name /*定義過程名*/ parameter data_type /*定義參數(shù)的類型*/ VARYING = default OUTPUT /*定義參數(shù)的屬性*/ ,.n1 WITH RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION /*定義存儲過程的處理方式*/AS sql_statement .n2 /*執(zhí)行的操作*/8存儲過程對于存儲過程要注意下列幾點:(1) 用戶定義的存儲過程只能在當(dāng)前數(shù)據(jù)庫中創(chuàng)建。(2) 成功執(zhí)行
6、CREATE PROCEDURE 語句后,過程名稱存儲在sysobjects 系統(tǒng)表中,而 CREATE PROCEDURE 語句的文本存儲在 syscomments 中。(3) 自動執(zhí)行存儲過程SQL Server 啟動時可以自動執(zhí)行一個或多個存儲過程。這些存儲過程必須由系統(tǒng)管理員在 master 數(shù)據(jù)庫中創(chuàng)建,并在 sysadmin 固定服務(wù)器角色下作為后臺過程執(zhí)行。 (4)一個存儲過程的最大尺寸為128M。(5)創(chuàng)建存儲過程的權(quán)限默認(rèn)屬于數(shù)據(jù)庫所有者,該所有者可將此權(quán)限授予其他用戶。9存儲過程2)存儲過程的執(zhí)行通過EXEC命令可以執(zhí)行一個已定義的存儲過程。語法格式: EXEC UTE r
7、eturn_status = procedure_name ;number | procedure_name_var parameter = value | variable OUTPUT | DEFAULT ,.n WITH RECOMPILE 存儲過程的執(zhí)行要注意下列幾點:(1) 如果存儲過程名的前三個字符為 sp_,SQL Server 會在 Master 數(shù)據(jù)庫中尋找該過程。如果沒能找到合法的過程名,SQL Server 會尋找所有者名稱為 dbo 的過程。(2) 參數(shù)可以通過 value 或 parameter_name = value 提供。 (3) 執(zhí)行存儲過程時,若語句是批處理
8、中的第一個語句,則不一定要指定EXECUTE 關(guān)鍵字。10存儲過程3) 舉例(1) 設(shè)計簡單的存儲過程例從XSCJ數(shù)據(jù)庫的三個表中查詢,返回學(xué)生學(xué)號、姓名、課程名、成績、學(xué)分。該存儲過程不使用任何參數(shù)。USE XSCJCREATE PROCEDURE student_info/*創(chuàng)建存儲過程*/ASSELECT a.學(xué)號, 姓名, 課程名, 成績, 學(xué)分 FROM XS a INNER JOIN XS_KC b ON a.學(xué)號 = b.學(xué)號 INNER JOIN KC t ON b.課程號= t.課程號 GO11存儲過程(2) 使用帶參數(shù)的存儲過程例從XSCJ數(shù)據(jù)庫的三個表中查詢某人指定課程的
9、成績和學(xué)分。該存儲過程接受與傳遞參數(shù)精確匹配的值。USE XSCJCREATE PROCEDURE student_info1 name char (8),cname char(16) AS SELECT a.學(xué)號, 姓名, 課程名, 成績, 學(xué)分 FROM XS a INNER JOIN XS_KC b ON a.學(xué)號 = b.學(xué)號 INNER JOIN KC t ON b.課程號= t.課程號 WHERE a.姓名=name and t.課程名=cnameGO12存儲過程(3) 使用帶有通配符參數(shù)的存儲過程例從三個表的聯(lián)接中返回指定學(xué)生的學(xué)號、姓名、所選課程名稱及該課程的成績。該存儲過程在
10、參數(shù)中使用了模式匹配,如果沒有提供參數(shù),則使用預(yù)設(shè)的默認(rèn)值。USE XSCJCREATE PROCEDURE st_infoname varchar(30) = 劉%AS SELECT a.學(xué)號,a.姓名,c.課程名,b.成績FROM XS a INNER JOIN XS_KC b ON a.學(xué)號 =b.學(xué)號 INNER JOIN KC c ON c.課程號= b.課程號 WHERE 姓名 LIKE nameGO 13存儲過程(4) 使用帶OUTPUT參數(shù)的存儲過程例用于計算指定學(xué)生的總學(xué)分,存儲過程中使用了一個輸入?yún)?shù)和一個輸出參數(shù)。USE XSCJGOIF EXISTS(SELECT na
11、me FROM sysobjects WHERE name = totalcredit AND type = P)DROP PROCEDURE totalcreditGOUSE XSCJGOCREATE PROCEDURE totalcredit name varchar(40), total int OUTPUTASSELECT total= SUM(學(xué)分)FROM XS,XS_KC,KCWHERE 姓名=name AND XS.學(xué)號= XS_KC.學(xué)號 GROUP BY XS.學(xué)號GO14存儲過程(5) 使用OUTPUT游標(biāo)參數(shù)的存儲過程OUTPUT 游標(biāo)參數(shù)用于返回存儲過程的局部游標(biāo)。例
12、在 XSCJ數(shù)據(jù)庫的XS表上聲明并打開一個游標(biāo)。USE XSCJIF EXISTS (SELECT name FROM sysobjects WHERE name = st_cursor and type = P)DROP PROCEDURE st_cursorGOCREATE PROCEDURE st_cursor st_cursor CURSOR VARYING OUTPUTASSET st_cursor = CURSOR FORWARD_ONLY STATIC FORSELECT * FROM XSOPEN st_cursorGO15存儲過程 (6) 使用 WITH ENCRYPTION
13、 選項WITH ENCRYPTION 子句對用戶隱藏存儲過程的文本。例創(chuàng)建加密過程,使用 sp_helptext 系統(tǒng)存儲過程獲取關(guān)于加密過程的信息,然后嘗試直接從 syscomments 表中獲取關(guān)于該過程的信息。IF EXISTS (SELECT name FROM sysobjects WHERE name = encrypt_this AND type = P) DROP PROCEDURE encrypt_thisGOUSE XSCJGOCREATE PROCEDURE encrypt_this WITH ENCRYPTIONASSELECT * FROM XSGO16存儲過程(7)
14、 創(chuàng)建用戶定義的系統(tǒng)存儲過程例 創(chuàng)建一個過程,顯示表名以 xs 開頭的所有表及其對應(yīng)的索引。如果沒有指定參數(shù),該過程將返回表名以 kc 開頭的所有表及對應(yīng)的索引。IF EXISTS (SELECT name FROM sysobjectsWHERE name = sp_showtable AND type = P) DROP PROCEDURE sp_showtableGOUSE masterCREATE PROCEDURE sp_showtable TABLE varchar(30) = kc%AS SELECT AS TABLE_NAME, AS IND
15、EX_NAME, indid AS INDEX_IDFROM sysindexes inx INNER JOIN sysobjects tab ON tab.id = inx.id WHERE LIKE TABLEGO USE XSCJEXEC sp_showtable xs%GO17存儲過程2利用企業(yè)管理器創(chuàng)建用戶存儲過程第1步 在SQL Server 企業(yè)管理器窗口中,選擇相應(yīng)的服務(wù)器、數(shù)據(jù)庫和存儲過程圖標(biāo)(本例選擇XSCJ數(shù)據(jù)庫),單擊鼠標(biāo)右鍵,出現(xiàn)如圖所示的快捷菜單。 第2步 選擇新建存儲過程,則出現(xiàn)編輯存儲過程的屬性窗口,在窗口中輸入定義的存儲過程,如圖所示,然后選
16、擇“確定”按鈕。 18用戶存儲過程的編輯修改 語法格式:ALTER PROC EDURE procedure_name ; number parameter data_type VARYING 0= default OUTPUT ,.n1 WITH RECOMPILE | ENCRYPTION| RECOMPILE , ENCRYPTION FOR REPLICATION AS sql_statement .n2 例對存儲過程student_info1進(jìn)行修改。USE XSCJGOALTER PROCEDURE student_info1 name char(8),cname char(16)
17、 AS SELECT a.學(xué)號, 姓名, 課程名, 成績, 學(xué)分 FROM XS a INNER join XS_KC b ON a.學(xué)號 = b.學(xué)號 INNER JOIN KC t ON b.課程號= t.課程號 WHERE a.姓名=name and t.課程名=cnameGO19用戶存儲過程的刪除 使用DROP PROCEDURE語句可永久地刪除存儲過程。在此之前,必須確認(rèn)該存儲過程沒有任何依賴關(guān)系。語法格式:DROP PROCEDURE procedure ,.n 例刪除 XSCJ數(shù)據(jù)庫中的student_info1 存儲過程。USE XSCJGODROP PROCEDURE stu
18、dent_info1procedure指要刪除的存儲過程或存儲過程組的名稱;n:表示可以指定多個存儲過程同時刪除。 20存儲過程的安全性示例假定EMP表是某用戶USER1的私有表,用戶SCOTT是開發(fā)者,最終用戶GREEN,現(xiàn)在要求GREEN只能通過SCOTT創(chuàng)建的存儲過程HIRE_EMP存取EMP表,該存儲過程查詢或插入雇員記錄.從USER1用戶環(huán)境下,為SCOTT用戶授予對EMP表的相應(yīng)權(quán)限。解:GRANT SELECT,INSERT,UPDATE,DELETE ON EMP TO SCOTT;SCOTT一旦創(chuàng)建完HIRE_EMP過程,給GREEN用戶授予對該過程的EXECUTE權(quán)限. G
19、RANT EXECUTE ON HIRE_EMP TO GREEN;21使用系統(tǒng)存儲過程來查看存儲過程 sp_help:用于顯示存儲過程的參數(shù)及其數(shù)據(jù)類型 sp_help objname= name 參數(shù)name為要查看的存儲過程的名稱。 sp_helptext:用于顯示存儲過程的源代碼 sp_helptext objname= name 參數(shù)name為要查看的存儲過程的名稱。sp_depends:顯示和存儲過程相關(guān)的數(shù)據(jù)庫對象 sp_depends objname=object 參數(shù)object為要查看依賴關(guān)系的存儲過程的名稱。sp_stored_procedures:用于返回當(dāng)前數(shù)據(jù)庫中的
20、存儲過程列表22觸發(fā)器觸發(fā)器是一種特殊的存儲過程,它在特定語言事件發(fā)生時自動執(zhí)行,通常用于實現(xiàn)強(qiáng)制業(yè)務(wù)規(guī)則和數(shù)據(jù)完整性。觸發(fā)器主要是通過事件進(jìn)行觸發(fā)而被執(zhí)行的,而存儲過程可以通過存儲過程名稱而被直接調(diào)用。觸發(fā)器的主要作用是實現(xiàn)由主鍵和外鍵所不能保證的復(fù)雜的參照完整性和數(shù)據(jù)一致性。23 觸發(fā)器主要優(yōu)點觸發(fā)器是自動的:當(dāng)對表中的數(shù)據(jù)作了任何修改(比如手工輸入或者應(yīng)用程序采取的操作)之后立即被激活。 觸發(fā)器可以通過數(shù)據(jù)庫中的相關(guān)表進(jìn)行層疊更改。 觸發(fā)器可以強(qiáng)制限制,這些限制比用 CHECK 約束所定義的更復(fù)雜。 24利用SQL命令創(chuàng)建觸發(fā)器 語法格式CREATE TRIGGER trigger_na
21、me ON table | view /*指定操作對象*/ WITH ENCRYPTION /*說明是否采用加密方式*/ FOR | AFTER | INSTEAD OF INSERT , UPDATE WITH APPEND NOT FOR REPLICATION /*說明該觸發(fā)器不用于復(fù)制*/AS IF UPDATE ( column ) AND | OR UPDATE ( column ) .n | IF ( COLUMNS_UPDATED ( ) bitwise_operator updated_bitmask ) comparison_operator column_bitmask
22、.n /*兩個IF子句用于說明觸發(fā)器執(zhí)行的條件*/sql_statement .n /*一條或若干條SQL語句*/ 25利用SQL命令創(chuàng)建觸發(fā)器2觸發(fā)器中使用的特殊表 inserted 邏輯表:當(dāng)向表中插入數(shù)據(jù)時,INSERT觸發(fā)器觸發(fā)執(zhí)行,新的記錄插入到觸發(fā)器表和inserted表中。 deleted邏輯表:用于保存已從表中刪除的記錄,當(dāng)觸發(fā)一個DELETE觸發(fā)器時,被刪除的記錄存放到deleted邏輯表中。 3使用觸發(fā)器的限制使用觸發(fā)器有下列限制:(1) CREATE TRIGGER 必須是批處理中的第一條語句,并且只能應(yīng)用到一個表中。 (2) 觸發(fā)器只能在當(dāng)前的數(shù)據(jù)庫中創(chuàng)建,但觸發(fā)器可以
23、引用當(dāng)前數(shù)據(jù)庫的外部對象。 (3) 如果指定觸發(fā)器所有者名限定觸發(fā)器,要以相同的方式限定表名。 (4) 在同一CREATE TRIGGER語句中,可以為多種操作(如 INSERT 和 UPDATE)定義相同的觸發(fā)器操作。 (5) 一個表的外鍵在 DELETE、UPDATE 操作上定義了級聯(lián),不能在該表上定義 INSTEAD OF DELETE、INSTEAD OF UPDATE 觸發(fā)器。26利用SQL命令創(chuàng)建觸發(fā)器 (7) 在觸發(fā)器內(nèi)可以指定任意的 SET 語句,所選擇的 SET 選項在觸發(fā)器執(zhí)行期間有效,并在觸發(fā)器執(zhí)行完后恢復(fù)到以前的設(shè)置。 (8) 觸發(fā)器中不允許包含以下 T-SQL 語句:
24、CREATE DATABASE 、ALTER DATABASE 、LOAD DATABASE 、RESTORE DATABASE 、DROP DATABASE、LOAD LOG 、RESTORE LOG 、DISK INIT、DISK RESIZE和RECONFIGURE (9) 觸發(fā)器不能返回任何結(jié)果,為了阻止從觸發(fā)器返回結(jié)果,不要在觸發(fā)器定義中包含 SELECT 語句或變量賦值。4權(quán)限CREATE TRIGGER 權(quán)限默認(rèn)授予定義觸發(fā)器的表所有者、sysadmin 固定服務(wù)器角色成員、db_owner 和 db_ddladmin 固定數(shù)據(jù)庫角色成員,并且不可轉(zhuǎn)讓。27利用SQL命令創(chuàng)建觸發(fā)
25、器5舉例例對于XSCJ數(shù)據(jù)庫,如果在XS表中添加或更改數(shù)據(jù),則將向客戶端顯示一條信息。USE XSCJ /*使用帶有提示消息的觸發(fā)器*/IF EXISTS (SELECT name FROM sysobjects WHERE name = reminder AND type = TR) DROP TRIGGER reminderGOCREATE TRIGGER reminder ON XSFOR INSERT, UPDATE AS RAISERROR (4008, 16, 10)GO注:4008為用戶自定義消息,可用sp_addmessage將自定義消息添加到sysmessages表中。28利
26、用SQL命令創(chuàng)建觸發(fā)器例在數(shù)據(jù)庫XSCJ中創(chuàng)建一觸發(fā)器,當(dāng)向XS_KC表插入一記錄時,檢查該記錄的學(xué)號在XS表是否存在,檢查課程號在KC表中是否存在,若有一項為否,則不允許插入。USE XSCJIF EXISTS (SELECT name FROM sysobjects WHERE name = check_trig AND type = TR) DROP TRIGGER check_trigGOCREATE TRIGGER check_trig ON XS_KCFOR INSERTASSELECT * FROM inserted a WHERE a.學(xué)號 NOT IN (SELECT b.學(xué)
27、號 FROM XS b) OR a.課程號 NOT IN (SELECT c.課程號 FROM KC c)BEGIN RAISERROR (違背數(shù)據(jù)的一致性., 16, 1) ROLLBACK TRANSACTIONEND29利用SQL命令創(chuàng)建觸發(fā)器例在XSCJ數(shù)據(jù)庫的XS_KC表上創(chuàng)建一觸發(fā)器,若對學(xué)號列和課程號列修改,則給出提示信息,并取消修改操作。USE XSCJGOCREATE TRIGGER update_trigON XS_KC FOR update AS/*檢查學(xué)號列(C0)和課程號列(C1)是否被修改,如果有某些列被修改了,則取消修改操作。*/IF (COLUMNS_UPDAT
28、ED() & 3) 0BEGINRAISERROR (違背數(shù)據(jù)的一致性., 16, 1) ROLLBACK TRANSACTION ENDGO30利用SQL命令創(chuàng)建觸發(fā)器6. INSTEAD OF觸發(fā)器的設(shè)計如果視圖的數(shù)據(jù)來自于多個基表,則必須使用INSTEAD OF 觸發(fā)器支持引用表中數(shù)據(jù)的插入、更新和刪除操作。如果視圖的列為以下幾種情況之一: (1)基表中的計算列。(2)IDENTITY INSERT 為 OFF 的基表中的標(biāo)識列。(3)具有 timestamp 數(shù)據(jù)類型的基表列。 該視圖的INSERT語句必須為這些列指定值,INSTEAD OF 觸發(fā)器在構(gòu)成將值插入基表的 INSERT
29、語句時會忽略指定的值。31例在XSCJ數(shù)據(jù)庫中創(chuàng)建表、視圖和觸發(fā)器,以說明INSTEAD OF INSERT觸發(fā)器的使用。USE XSCJCREATE TABLE books( BookKey int IDENTITY(1,1), BookName nvarchar(10) NOT NULL, Color nvarchar(10) NOT NULL, ComputedCol AS (BookName +Color), Pages int)GOCREATE VIEW View2/*建立一個視圖,包含基表的所有列*/AS SELECT BookKey, BookName ,Color, Compu
30、tedCol, PagesFROM booksGO/*在View2視圖上創(chuàng)建一個 INSTEAD OF INSERT 觸發(fā)器*/CREATE TRIGGER InsteadTrig on View2INSTEAD OF INSERTASBEGIN /*實際插入時,INSERT語句中不包含BookKey字段和ComputedCol值*/INSERT INTO books SELECT BookName ,Color, Pages FROM insertedENDGO32利用企業(yè)管理器創(chuàng)建觸發(fā)器 步驟如下: 第1步 展開服務(wù)器組,然后展開服務(wù)器。第2步 展開“數(shù)據(jù)庫”文件夾,展開將定義觸發(fā)器的表所
31、屬的數(shù)據(jù)庫,然后單擊“表”文件夾。第3步 選擇將在其上創(chuàng)建觸發(fā)器的表右擊,出現(xiàn)快捷菜單,選擇“所有任務(wù)”菜單項下的“管理觸發(fā)器”子菜單項,如圖所示。執(zhí)行該命令后,進(jìn)入如圖所示的界面。 第4步 在“名稱”中,單擊 “新建”,在“文本”框中輸入觸發(fā)器文本。若要檢查語法,單擊“檢查語法”命令。 33觸發(fā)器的修改1利用SQL命令修改觸發(fā)器語法格式:ALTER TRIGGER trigger_nameON ( table | view ) WITH ENCRYPTION ( FOR | AFTER | INSTEAD OF ) DELETE , INSERT , UPDATE NOT FOR REPLI
32、CATION ASsql_statement .n | ( FOR | AFTER | INSTEAD OF ) INSERT , UPDATE NOT FOR REPLICATION AS IF UPDATE ( column ) AND | OR UPDATE ( column ) .n | IF ( COLUMNS_UPDATED ( ) bitwise_operator updated_bitmask ) comparison_operator column_bitmask .n sql_statement .n 34觸發(fā)器的修改例修改XSCJ數(shù)據(jù)庫中在XS表上定義的觸發(fā)器remind
33、er。USE XSCJALTER TRIGGER reminder ON XSFOR UPDATE AS RAISERROR (“執(zhí)行的操作是修改”, 16, 10)GO2. 通過企業(yè)管理器修改觸發(fā)器進(jìn)入企業(yè)管理器,修改觸發(fā)器的步驟與創(chuàng)建的步驟相同,進(jìn)入界面后在“名稱”對應(yīng)的下拉表中選擇要修改的觸發(fā)器名即可進(jìn)入觸發(fā)器修改狀態(tài)。說明:trigger_name:指要更改的現(xiàn)有觸發(fā)器。 如果原來的觸發(fā)器定義是用 WITH ENCRYPTION 或 RECOMPILE 創(chuàng)建的,那么只有在ALTER TRIGGER中也包含這些選項時,這些選項才有效。其他參數(shù)含義參考創(chuàng)建觸發(fā)器命令部分。35觸發(fā)器的刪除1
34、. 利用SQL命令刪除觸發(fā)器語法格式:DROP TRIGGER trigger ,.n 說明:trigger:指要刪除的觸發(fā)器名稱,包含觸發(fā)器所有者名。n:表示可以指定多個觸發(fā)器。例 刪除觸發(fā)器reminder。USE XSCJIF EXISTS (SELECT name FROM sysobjects WHERE name = reminder AND type = TR) DROP TRIGGER reminderGO2通過企業(yè)管理器刪除觸發(fā)器進(jìn)入界面后在“名稱”對應(yīng)的下拉表中選擇要刪除的觸發(fā)器名,然后選擇“刪除”按鈕。36sp_help、sp_helptext和sp_depends具體用
35、途和語法形式 sp_help:用于查看觸發(fā)器的一般信息,如觸發(fā)器的名稱、屬性、類型和創(chuàng)建時間。sp_help 觸發(fā)器名稱 sp_helptext:用于查看觸發(fā)器的正文信息sp_helptext 觸發(fā)器名稱 sp_depends:用于查看指定觸發(fā)器所引用的表或者指定的表涉及到的所有觸發(fā)器。sp_depends 觸發(fā)器名稱sp_depends 表名37附例:用戶登錄驗證CREATE PROC upUserLoginstrLoginName NVARCHAR(20),strLoginPwd NVARCHAR(20),blnReturn BIT OUTPUTAS- 定義一個臨時用來保存密碼的變量DECLARE strPwd NVARCHAR(20)BEGIN - 從表中查詢當(dāng)前用戶的密碼,賦值給 strPwd 變量,下面要對它進(jìn)行比較 SELECT strPwd=uLoginPwd FROM uUser WHERE uLoginName=strLoginName IF strLoginPwd = strPwd BEGIN SET blnRetu
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年光電子器件及激光器件項目發(fā)展計劃
- DB31∕T 478.26-2019 主要工業(yè)產(chǎn)品用水定額及其計算方法 第26部分:原水及自來水制水廠行業(yè)(原水、自來水)
- 2025年光電測沙儀項目建議書
- 保健食品知識培訓(xùn)課件
- 物流系統(tǒng)分析 課件 任務(wù)六 理解物流系統(tǒng)的優(yōu)化原理
- 2023年北京卷高考真題數(shù)學(xué)試卷
- 高效解決辦公設(shè)備使用常見問題
- 協(xié)議離婚手續(xù)辦理流程
- 2025年鶴壁貨運從業(yè)資格證考試題庫答案
- 名雅居營銷策劃書
- 2023靜脈治療護(hù)理技術(shù)操作標(biāo)準(zhǔn)解讀
- 基礎(chǔ)日語1學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫2023年
- 客源國概況-韓國課件
- 船塢的施工方法與流程
- 保密風(fēng)險評估報告
- 道路建筑材料電子教案(全)
- 《尹定邦設(shè)計學(xué)概論》試題及答案
- 黃河流域生態(tài)保護(hù)和高質(zhì)量發(fā)展知識競賽試題及答案(共52題)
- 1、1~36號元素電子排布式、排布圖
- 國網(wǎng)新聞宣傳與企業(yè)文化管理專責(zé)題庫匯總-下(判斷、簡答題)
- 職業(yè)衛(wèi)生調(diào)查表
評論
0/150
提交評論