存儲(chǔ)過程和觸發(fā)器.ppt_第1頁(yè)
存儲(chǔ)過程和觸發(fā)器.ppt_第2頁(yè)
存儲(chǔ)過程和觸發(fā)器.ppt_第3頁(yè)
存儲(chǔ)過程和觸發(fā)器.ppt_第4頁(yè)
存儲(chǔ)過程和觸發(fā)器.ppt_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2020/7/29,1,第十章 存儲(chǔ)過程和觸發(fā)器,2020/7/29,2,10.1存儲(chǔ)過程,10.1.1 存儲(chǔ)過程概述,存儲(chǔ)過程(Stored Procedure)是一組為了完成特定功能的SQL 語(yǔ)句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中。 一般用來處理需要與數(shù)據(jù)庫(kù)進(jìn)行頻繁交互的復(fù)雜的業(yè)務(wù)。因?yàn)榇鎯?chǔ)過程具有以下優(yōu)點(diǎn):,存儲(chǔ)過程在服務(wù)器端運(yùn)行,執(zhí)行速度快。 封裝業(yè)務(wù)邏輯也可以使數(shù)據(jù)庫(kù)操作人員與應(yīng)用系統(tǒng)開發(fā)人員的分工更明確,支持模塊化設(shè)計(jì)。,2020/7/29,3,存儲(chǔ)過程執(zhí)行一次后,其執(zhí)行計(jì)劃就駐留在高速緩沖存儲(chǔ)器,如果需要再次調(diào)用,只需要從高速緩沖存儲(chǔ)器中調(diào)用,提高系統(tǒng)性能。 存儲(chǔ)過程可以作為安全機(jī)制。通

2、過授予用戶對(duì)存儲(chǔ)過程的操作權(quán)限來實(shí)現(xiàn)安全機(jī)制。,使體現(xiàn)企業(yè)規(guī)則的運(yùn)算程序放入數(shù)據(jù)庫(kù)服務(wù)器中,以便集中控制。,2020/7/29,4,10.1.2 存儲(chǔ)過程的分類,1系統(tǒng)存儲(chǔ)過程 系統(tǒng)存儲(chǔ)過程存儲(chǔ)在master數(shù)據(jù)庫(kù)中,以sp_開頭,可以在其他數(shù)據(jù)庫(kù)中進(jìn)行調(diào)用。 如:sp_help就是取得指定對(duì)象的相關(guān)信息。 2擴(kuò)展存儲(chǔ)過程 在SQL Server環(huán)境之外執(zhí)行動(dòng)態(tài)鏈接庫(kù)稱為擴(kuò)展存儲(chǔ)過程,以XP_開頭,用來調(diào)用操作系統(tǒng)提供的功能。 3用戶自定義的存儲(chǔ)過程 由用戶創(chuàng)建并能完成某一特定功能的存儲(chǔ)過程。包括Transact-SQL和CLR兩種類型。 (1)Transact-SQL存儲(chǔ)過程是指保存的Tra

3、nsact-SQL語(yǔ)句集合,可以接受和返回用戶提供參數(shù)。也可以從數(shù)據(jù)庫(kù)向客戶端應(yīng)用程序返回?cái)?shù)據(jù)。 (2)CLR在本書不做詳細(xì)介紹。,2020/7/29,5,10.1.3 建立存儲(chǔ)過程,1. 使用對(duì)象資源管理器建立存儲(chǔ)過程,2. 使用T-SQL命令建立存儲(chǔ)過程,語(yǔ)法形式如下: CREATE PROCEDURE procedure_name parameter data_type VARYING =defaultOUTPUT ,.n WITH RECOMPILE|ENCRYPTION|RECOMPILE, ENCRYPTION FOR REPLICATION AS sql_statement .n

4、 ,2020/7/29,6,【例題10.1】創(chuàng)建一個(gè)不帶參數(shù)的存儲(chǔ)過程,名稱為pro_stu,用于檢索學(xué)生的姓名、性別和家庭住址。 USE score GO -判斷pro_stu存儲(chǔ)過程是否存在,若存在,則刪除 If exists(select name from sysobjects where name=pro_stu and type=p) DROP PROCEDURE pro_stu Go -建立存儲(chǔ)過程 CREATE PROC pro_stu As SELECT student_name, sex, address FROM student,2020/7/29,7,【例題10.2】創(chuàng)

5、建一個(gè)帶參數(shù)的存儲(chǔ)過程,名稱為pro_class,在執(zhí)行存儲(chǔ)過程的時(shí)候輸入班級(jí)編號(hào),然后檢索該班級(jí)的學(xué)生的詳細(xì)信息。 USE score GO -判斷pro_class存儲(chǔ)過程是否存在,若存在,則刪除 If exists(select name from sysobjects where name=pro_class and type=p) DROP PROCEDURE pro_class Go -建立存儲(chǔ)過程 CREATE PROC pro_class c_no char(8) As SELECT * FROM student WHERE class_id=c_no,2020/7/29,8,

6、10.1.4 存儲(chǔ)過程的執(zhí)行,語(yǔ)法形式如下: EXECUTE return_status = procedure_name|procedure_name_var parameter=value|variableOUTPUT|DEFAULT ,.n WITH RECOMPILE ,2020/7/29,9,1.無(wú)參存儲(chǔ)過程的執(zhí)行,【例題10.3】執(zhí)行在例題10.1中創(chuàng)建的存儲(chǔ)過程pro_stu。 EXEC pro_stu,在執(zhí)行帶參存儲(chǔ)過程的時(shí)候參數(shù)有以下幾種傳遞方式:,2.帶參存儲(chǔ)過程的執(zhí)行,(1)順序法,2020/7/29,10,CREATE PROC pro_update s_id char

7、(10), c_id char(5), result int -參數(shù) AS UPDATE score SET grade=result WHERE student_id=s_id AND course_id=c_id / *順序法執(zhí)行存儲(chǔ)過程,把0801101號(hào)學(xué)生1001號(hào)課程的成績(jī)修改為85分*/ EXEC pro_update 0801101, 1001, 85,【例題10.4】建立一個(gè)存儲(chǔ)過程pro_update,通過指定學(xué)號(hào)和課程編號(hào)來把成績(jī)表中的成績(jī)修改為指定的某個(gè)值,然后執(zhí)行該存儲(chǔ)過程。,2020/7/29,11,EXEC pro_update s_id=0801101, res

8、ult=85,c_id=1001 說明:提示法中的參數(shù)順序可以與建立存儲(chǔ)過程時(shí)的參數(shù)順序不一致,而順序法必須保持一致。,(2)提示法,【例題10.5】通過提示法來執(zhí)行存儲(chǔ)過程pro_update。,2020/7/29,12,建立存儲(chǔ)過程時(shí),可以指定參數(shù)的默認(rèn)值,默認(rèn)值必須為常量或者為NULL。,(3)使用默認(rèn)參數(shù),【例題10.6】建立一個(gè)存儲(chǔ)過程pro_insert,用來完成向課程表中插入記錄的功能,然后執(zhí)行該存儲(chǔ)過程并檢查執(zhí)行結(jié)果。 CREATE PROC pro_insert c_id char(5), c_name char(20), period int=64, c_type char

9、(10)=NULL AS INSERT course VALUES( c_id ,c_name,period,c_type ) GO -執(zhí)行存儲(chǔ)過程pro_insert EXEC pro_insert 1006, c+程序設(shè)計(jì) GO -查看插入結(jié)果 SELECT * FROM course,2020/7/29,13,在建立存儲(chǔ)過程時(shí),通過定義輸出參數(shù),可以從存儲(chǔ)過程中返回一個(gè)或多個(gè)值。在執(zhí)行存儲(chǔ)過程時(shí),可以將結(jié)果返回給返回參數(shù)。定義輸出參數(shù)需要在參數(shù)定義的數(shù)據(jù)類型后使用關(guān)鍵字OUTPUT,或省寫為OUT。,(4)使用帶OUTPUT的返回參數(shù),【例題10.7】建立一個(gè)帶參數(shù)的存儲(chǔ)過程,用于求兩個(gè)

10、整數(shù)的和,其中和定義為OUTPUT參數(shù),然后執(zhí)行存儲(chǔ)過程并輸出和。 CREATE PROC pro_sum a int ,b int, sum int output AS SET sum=a+b GO -執(zhí)行存儲(chǔ)過程 DECLARE s int EXEC pro_sum 20 ,15,s output PRINT s,2020/7/29,14,10.1.5 存儲(chǔ)過程的返回值,存儲(chǔ)過程被執(zhí)行以后可以返回一個(gè)整數(shù)類型的代碼值,該值用來記錄存儲(chǔ)過程的執(zhí)行情況。若返回值為0,表示執(zhí)行成功;否則表示執(zhí)行不成功。,1)用一個(gè)變量來捕捉存儲(chǔ)過程執(zhí)行后返回值。 2)使用RETURN語(yǔ)句為存儲(chǔ)過程指定一個(gè)確定的

11、返回值,以用來反映存儲(chǔ)過程執(zhí)行的結(jié)果情況。,捕捉存儲(chǔ)過程返回值的方法,2020/7/29,15,【例題10.9】用變量來捕捉存儲(chǔ)過程執(zhí)行后返回值。建立一個(gè)存儲(chǔ)過程,完成查詢指定學(xué)生指定科目的成績(jī)。然后執(zhí)行該存儲(chǔ)過程并捕捉執(zhí)行是否成功。 CREATE PROC pro_grade s_id char(10), c_id char(5) AS SELECT grade FROM score WHERE student_id=s_id AND course_id=c_id GO DECLARE status int -聲明變量,用來存放執(zhí)行結(jié)果的狀態(tài) EXEC status=pro_grade 08

12、01101,1001 SELECT status -輸出狀態(tài)值,2020/7/29,16,【例題10.10】使用RETURN語(yǔ)句為存儲(chǔ)過程指定一個(gè)確定的返回值。建立一個(gè)存儲(chǔ)過程,完成查詢指定學(xué)生指定科目的成績(jī),如果成績(jī)大于60分,返回1;如果等于60分,返回0;小于60分,則返回-1。然后執(zhí)行該存儲(chǔ)過程并輸出返回值。 CREATE PROC pro_return s_id char(10), c_id char(5) AS DECLARE result int SELECT result=grade FROM score WHERE student_id=s_id AND course_id=

13、c_id IF result60 RETURN 1 IF result=60 RETURN 0 IF result60 RETURN -1 GO DECLARE status int -聲明變量,用來存放執(zhí)行結(jié)果的狀態(tài) EXEC status=pro_return 0801101,1001 SELECT 狀態(tài)=status -輸出狀態(tài)值,2020/7/29,17,10.1.6 查看、修改和刪除存儲(chǔ)過程,1.修改存儲(chǔ)過程,語(yǔ)法形式如下: ALTER PROCEDURE procedure_name parameter data_type VARYING =defaultOUTPUT ,.n WI

14、TH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION FOR REPLICATION AS sql_statement .n ,2020/7/29,18,【例題10.11】修改存儲(chǔ)過程pro_sum,使其功能更改為輸出兩個(gè)數(shù)相加的和,不使用返回參數(shù)。,USE score GO ALTER PROC pro_sum a int ,b int AS DECLARE sum int SET sum=a+b PRINT sum,2020/7/29,19,2.查看存儲(chǔ)過程,(1)使用對(duì)象資源管理器查看,(2)使用T-SQL命令查看,1)查看存儲(chǔ)過程的參數(shù)及其數(shù)據(jù)類型

15、格式:sp_help name 2)查看存儲(chǔ)過程的源代碼 格式:sp_helptext name 3)查看和存儲(chǔ)過程相關(guān)的數(shù)據(jù)庫(kù)對(duì)象 格式:sp_depends name,2020/7/29,20,【例題10.12】查看存儲(chǔ)過程pro_return的定義文本。 EXEC sp_helptext pro_return,例題10.13】查看存儲(chǔ)過程pro_return的所有者、類型及參數(shù)。 EXEC sp_help pro_return,【例題10.14】查看存儲(chǔ)過程pro_return的相關(guān)性。 EXEC sp_depends pro_return,2020/7/29,21,3.刪除存儲(chǔ)過程,(

16、1)使用對(duì)象資源管理器刪除存儲(chǔ)過程,(2)使用T-SQL語(yǔ)句刪除存儲(chǔ)過程,語(yǔ)法格式: DROP PROCEDURE procedure_name ,n,【例題10.15】刪除存儲(chǔ)過程pro_return。 DROP PROC pro_return,2020/7/29,22,10.2 觸發(fā)器,10.2.1 觸發(fā)器的概述,Microsoft SQL Server 2005提供了兩種主要機(jī)制來強(qiáng)制執(zhí)行業(yè)務(wù)規(guī)則和數(shù)據(jù)完整性:約束和觸發(fā)器。,觸發(fā)器的主要作用就是其能夠?qū)崿F(xiàn)由主鍵和外鍵所不能保證的復(fù)雜的參照完整性和數(shù)據(jù)的一致性。具體表現(xiàn)為: 觸發(fā)器可以通過數(shù)據(jù)庫(kù)中的相關(guān)表進(jìn)行級(jí)聯(lián)更改。 觸發(fā)器可以防止惡意

17、或錯(cuò)誤的UPDATE、 INSERT、 DELETE 、CREATE和ALTER操作,這些限制比用 CHECK 約束所定義的更復(fù)雜。 觸發(fā)器可以評(píng)估數(shù)據(jù)修改前后表的狀態(tài),并根據(jù)該差異采取措施。 一個(gè)表可以有多個(gè)同類觸發(fā)器允許采取多個(gè)不同的操作來響應(yīng)同一個(gè)修改語(yǔ)句。,2020/7/29,23,10.2.2 觸發(fā)器的類型,1.DML觸發(fā)器,DML觸發(fā)器是當(dāng)數(shù)據(jù)庫(kù)服務(wù)器中發(fā)生數(shù)據(jù)操作語(yǔ)言事件時(shí)所執(zhí)行的操作 .,DML觸發(fā)器有三種類型:AFTER觸發(fā)器、INSTEAD OF觸發(fā)器和CLR觸發(fā)器。,兩大類觸發(fā)器:DML觸發(fā)器和DDL觸發(fā)器。,2020/7/29,24,指定用觸發(fā)器中的操作代替觸發(fā)語(yǔ)句的操

18、作,也就是該觸發(fā)器并不執(zhí)行所定義的操作(INSERT、 DELETE、 UPDATE),而是執(zhí)行觸發(fā)器本身的SQL語(yǔ)句。可以為基于一個(gè)或多個(gè)表的視圖定義INSTEAD OF觸發(fā)器,而這些觸發(fā)器可能夠擴(kuò)展視圖可支持的數(shù)據(jù)類型。,(2)INSTEAD OF觸發(fā)器,表示只有在執(zhí)行了指定的操作(INSERT、 DELETE、 UPDATE)之后觸發(fā)器才被激活,執(zhí)行觸發(fā)器中的SQL 語(yǔ)句。若只指定FOR, 則默認(rèn)為AFTER 觸發(fā)器,且該類型觸發(fā)器僅能在表上創(chuàng)建。,(1)AFTER觸發(fā)器,2020/7/29,25,DDL觸發(fā)器是一種特殊的觸發(fā)器,當(dāng)服務(wù)器或數(shù)據(jù)庫(kù)中發(fā)生數(shù)據(jù)定義語(yǔ)言(DDL,CREATE、

19、DROP、ALTER等)事件時(shí)將激活這些觸發(fā)器。他們可以用于在數(shù)據(jù)庫(kù)中執(zhí)行管理任務(wù),譬如,審核以及規(guī)范數(shù)據(jù)庫(kù)操作。DDL觸發(fā)器無(wú)法作為INSTEAD OF觸發(fā)器使用。,2.DDL觸發(fā)器,如果要執(zhí)行以下操作,可以考慮使用DDL觸發(fā)器。 防止他人對(duì)數(shù)據(jù)庫(kù)架構(gòu)進(jìn)行修改。 希望數(shù)據(jù)庫(kù)發(fā)生某種情況以響應(yīng)數(shù)據(jù)庫(kù)架構(gòu)中的更改。 要記錄數(shù)據(jù)庫(kù)架構(gòu)中的更改或事件。,2020/7/29,26,(1) 使用對(duì)象資源管理器建立DML觸發(fā)器,10.2.3 DML觸發(fā)器,1. 建立DML觸發(fā)器,(2) 使用T-SQL語(yǔ)句建立DML觸發(fā)器 語(yǔ)法格式: CREATE TRIGGER trigger_name ON table

20、|view WITH ENCRYPTION FOR | AFTER | INSTEAD OF DELETE , INSERT , UPDATE AS sql_statement.n ,2020/7/29,27,【例題10.16】在student表中創(chuàng)建了一個(gè)觸發(fā)器,當(dāng)往該表中成功插入記錄時(shí),輸出提示信息。然后執(zhí)行插入記錄操作,檢驗(yàn)觸發(fā)器。 -判斷insert_stu觸發(fā)器是否存在,若存在,則刪除 IF EXISTS (SELECT name FROM sysobjects WHERE name = insert_stu AND type = TR) DROP TRIGGER insert_st

21、u GO -建立觸發(fā)器 CREATE TRIGGER insert_stu ON student FOR INSERT AS PRINT 插入記錄成功 -插入記錄,激活觸發(fā)器 INSERT student(student_id,student_name,sex,class_id) VALUES(0801109,吳盼盼,男,08011),2020/7/29,28,(1)inserted表和deleted表,2DML觸發(fā)器的應(yīng)用,在執(zhí)行觸發(fā)器時(shí),SQL Server 會(huì)為觸發(fā)器建立兩個(gè)臨時(shí)表:deleted 表和 inserted,它們的結(jié)構(gòu)和觸發(fā)器所在的表的結(jié)構(gòu)相同,Inserted表存儲(chǔ)INS

22、ERT和UPDATE語(yǔ)句所影響的行的副本。在一個(gè)插入或更新事務(wù)處理中,新建行被同時(shí)添加到inserted表和觸發(fā)器表中。Inserted表中的行是觸發(fā)器表中新行的副本。 Deleted表存儲(chǔ)DELETE和UPDATE語(yǔ)句所影響的行的復(fù)本。在執(zhí)行DELETE或UPDATE語(yǔ)句時(shí),記錄從觸發(fā)器表中刪除,并傳輸?shù)絛eleted表中。Deleted表和觸發(fā)器表通常沒有相同的行。,2020/7/29,29,注意一:執(zhí)行 UPDATE 語(yǔ)句時(shí),會(huì)被視為插入或刪除事務(wù),舊的行值會(huì)保留一份副本在deleted表中,而新的行值的副本則保留在觸發(fā)器表與inserted表。 注意二:inserted和deleted

23、表中的值只限于在觸發(fā)器中使用。一旦觸發(fā)器完成就無(wú)法再使用。,2020/7/29,30,【例題10.17】建立一個(gè)觸發(fā)器,在修改數(shù)據(jù)時(shí)激活該觸發(fā)器。然后執(zhí)行修改操作,查看inserted和deleted表中的數(shù)據(jù)。 -建立觸發(fā)器 CREATE TRIGGER update_stu ON student FOR insert, update,delete AS SELECT * FROM inserted SELECT * FROM deleted -修改數(shù)據(jù),激活觸發(fā)器 UPDATE student SET sex=男 WHERE student_id=0801101,2020/7/29,31,

24、當(dāng)往表中插入記錄時(shí),INSERT觸發(fā)器被執(zhí)行。一般情況下,INSERT觸發(fā)器被用來更新時(shí)間標(biāo)記字段,或者驗(yàn)證被觸發(fā)器監(jiān)控的字段中的數(shù)據(jù)是否滿足要求,以確保數(shù)據(jù)完整性。,(2)INSERT觸發(fā)器,2020/7/29,32,【例題10.18】建立一個(gè)觸發(fā)器,當(dāng)向成績(jī)表中插入一條記錄時(shí),檢查被插入的成績(jī)是否大于等于0和小于等于100。若不滿足該條件,不允許插入記錄。 CREATE TRIGGER check_insert ON score AFTER insert AS DECLARE 成績(jī) int SELECT 成績(jī)=grade FROM inserted IF 成績(jī)=0 AND 成績(jī)=100 P

25、RINT 插入成功 ELSE BEGIN PRINT 成績(jī)值超出范圍,不允許插入 ROLLBACK TRANSACTION END -插入記錄,檢驗(yàn)insert觸發(fā)器的作用 INSERT grade(student_id,course_id,grade) VALUES(0801107,1001,-10),2020/7/29,33,(3)UPDATE觸發(fā)器 修改觸發(fā)器和插入觸發(fā)器的工作過程基本上一致,修改一條記錄等于插入了一條新的記錄并且刪除一條舊的記錄。,2020/7/29,34,【例題10.19】假設(shè)成績(jī)信息被成功錄入到表中以后將允許修改,建立一個(gè)觸發(fā)器,禁止其修改成績(jī)。 CREATE TR

26、IGGER check_update ON score AFTER update AS IF update(grade) BEGIN PRINT 修改無(wú)效,成績(jī)被錄入后,不允許修改 ROLLBACK TRANSACTION END -修改成績(jī)值,檢查update觸發(fā)器的作用 UPDATE score set grade=80 WHERE student_id=0801101 AND course_id=1001,2020/7/29,35,(4)DELETE觸發(fā)器 DELETE觸發(fā)器通常用于兩種情況,第一種情況是為了防止那些確實(shí)需要?jiǎng)h除但會(huì)引起數(shù)據(jù)一致性問題的記錄的刪除。 第二種情況是執(zhí)行可刪除

27、主記錄的子記錄的級(jí)聯(lián)刪除操作??梢允褂眠@樣的觸發(fā)器從主銷售記錄中刪除所有的定單項(xiàng)。,2020/7/29,36,【例題10.20】在學(xué)生表中建立一個(gè)觸發(fā)器,若刪除學(xué)生記錄,則把該學(xué)生在成績(jī)表中的成績(jī)記錄一并刪除。 CREATE TRIGGER check_delete ON student AFTER delete AS DELETE score WHERE student_id in (SELECT student_id FROM deleted) -刪除學(xué)生記錄,檢查delete觸發(fā)器的作用 DELETE student WHERE student_id=0801103 -查看成績(jī)表grad

28、e中0801103號(hào)學(xué)生的成績(jī)是否被刪除 SELECT * FROM grade,2020/7/29,37,10.2.4 DDL觸發(fā)器 1、建立DDL觸發(fā)器 CREATE TRIGGER trigger_name ON ALL SERVER|DATABASE WITH ENCRYPTION FOR | AFTER event_type|event_group,n AS sql_statement.n ,2020/7/29,38,參數(shù)說明: ALL SERVER 指明觸發(fā)器的作用域?yàn)楫?dāng)前服務(wù)器。如果指定了此參數(shù),則只要當(dāng)前服務(wù)器中的任何位置出現(xiàn)event_type或event_group,就會(huì)激

29、活觸發(fā)器。 DATABASE 指明觸發(fā)器的作用域?yàn)楫?dāng)前數(shù)據(jù)庫(kù)。如果指定了此參數(shù),則只要當(dāng)前數(shù)據(jù)庫(kù)中的任何位置出現(xiàn)event_type或event_group,就會(huì)激活觸發(fā)器。 event_type 將導(dǎo)致激活DDL觸發(fā)器的T-SQL語(yǔ)言的名稱。event_type選項(xiàng)有:CREATE_TABLE、CREATE_ DATABASE 、ALTER_TABLE等等。 event_group 預(yù)定義的T-SQL語(yǔ)言事件分組的名稱。執(zhí)行任何屬于event_group的T-SQL語(yǔ)言事件,都將激活DDL觸發(fā)器。 event_group有:DDL_SERVER_SECURITY_EVENTS代表所有以服務(wù)器

30、為目標(biāo)的各類DDL語(yǔ)法語(yǔ)法事件,而 DDL_TABLE_VIEW_EVENTS代表了針對(duì)數(shù)據(jù)表、視圖表、索引與統(tǒng)計(jì)的DDL事件。,2020/7/29,39,【例題10.21】使用 DDL 觸發(fā)器來防止數(shù)據(jù)庫(kù)score中的表被任意修改或刪除。 USE score GO CREATE TRIGGER safety ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS BEGIN PRINT 禁止修改或刪除表 ROLLBACK END -修改表,檢驗(yàn)safety觸發(fā)器的功能 ALTER TABLE student ADD f_name char(8),2020/7/2

31、9,40,【例題10.22】建立 DDL 觸發(fā)器來防止在當(dāng)前服務(wù)器下建立數(shù)據(jù)庫(kù)。 CREATE TRIGGER forbid_create ON ALL SERVER FOR CREATE_DATABASE AS BEGIN PRINT 禁止建立數(shù)據(jù)庫(kù) ROLLBACK END -建立數(shù)據(jù)庫(kù),檢驗(yàn)forbid_create觸發(fā)器的功能 CREATE DATABASE book,2020/7/29,41,10.2.5查看、修改和刪除觸發(fā)器,1. 查看觸發(fā)器 ()使用對(duì)象資源管理器查看觸發(fā)器信息 ()使用系統(tǒng)存儲(chǔ)過程查看觸發(fā)器,2020/7/29,42,(1)sp_help:用于查看觸發(fā)器的一般信息,如觸發(fā)器的名稱、屬性、類型和創(chuàng)建時(shí)間。 格式:sp_help 觸發(fā)器名稱 (2) sp_helptext:用于查看觸發(fā)器的正文信息 格式:s

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論