視圖、存儲(chǔ)過程、函數(shù)、游標(biāo)與觸發(fā)器介紹_第1頁
視圖、存儲(chǔ)過程、函數(shù)、游標(biāo)與觸發(fā)器介紹_第2頁
視圖、存儲(chǔ)過程、函數(shù)、游標(biāo)與觸發(fā)器介紹_第3頁
視圖、存儲(chǔ)過程、函數(shù)、游標(biāo)與觸發(fā)器介紹_第4頁
視圖、存儲(chǔ)過程、函數(shù)、游標(biāo)與觸發(fā)器介紹_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、視圖、存儲(chǔ)過程、函數(shù)、游標(biāo)與觸發(fā)器學(xué)習(xí)目標(biāo)掌握使用視圖掌握使用存儲(chǔ)過程掌握使用自定義標(biāo)量函數(shù)、表值函數(shù)掌握使用游標(biāo)掌握使用觸發(fā)器-、視圖的定義視圖由SELECT查詢語句所定義的一個(gè)虛擬表,是查看數(shù)據(jù)的一種非常有效的方式,同真實(shí)的數(shù)據(jù)表一樣,視圖也包含一系列帶有名稱的數(shù)據(jù)列和數(shù)據(jù)行,但視圖與數(shù)據(jù)表又有很大的不同,視圖中的數(shù)據(jù)并不真實(shí)的存在于數(shù)據(jù)庫中。1.1、 視圖的優(yōu)點(diǎn)簡化查詢提供一種安全機(jī)制視圖掩碼(對(duì)長的字段重新命名)數(shù)據(jù)即時(shí)更新1.2、 視圖的分類 標(biāo)準(zhǔn)視圖:使用最頻繁的視圖,不存儲(chǔ)任何數(shù)據(jù),不占用任何存儲(chǔ)空間 索引視圖:擁有唯一群集索引的視圖被稱為索引視圖,它存儲(chǔ)真實(shí)索引數(shù)據(jù),占用一定的

2、存儲(chǔ)空間。 分區(qū)視圖:現(xiàn)在用分區(qū)表進(jìn)行替代1.2.K標(biāo)準(zhǔn)視圖-創(chuàng)建帶仃部門編號(hào)的emp視圖SELECTdbo.EMP.EMPNO,dbo.EMP.ENAME,dbo.EMP.JOB,dbo.EMP.MGR,dbo.EMP.HIREDATE,dbo.EMP.SAL,dbo.EMP.COMM,dbo.EMP.DEPTNO,dbo.DEPT.DNAMEFROMdbo.EMPINNERJOINdbo.DEPTONdbo.EMP.DEPTNO=dbo.DEPT.DEPTNO -通過視圖修改數(shù)據(jù)updatev_emp_with_deptnamesetsal=800v/hereempno=7369注意:(1

3、)可以修改基于兩個(gè)或兩個(gè)以上基表的視圖,但是每次修改只能影響一個(gè)基表,不能同時(shí)修改。(2)不能修改通過計(jì)算得到的列、有內(nèi)置函數(shù)的列以及有聚合函數(shù)的列1.2.2,索引視圖創(chuàng)建各部門人數(shù)的視圖dropviewv_countOfDeptgocreateviewv_countOfDeptWITHSCHEMABINDINGasSELECTEMP.deptno,count_big(*)empcountFROMdbu.EMPgroupbyemp.deptno創(chuàng)建聚合索引CREATEUNIQUECLUSTEREDINDEXLv_countOfDept_deptnoONv_countOfDept(deptno)

4、注意:(1)創(chuàng)建索引視圖,必須擁有唯聚合索引,如果創(chuàng)建聚合索引,帶有聚合函數(shù)的基礎(chǔ)視圖必須使用WITHSCHEMABINDING,groupby以及count_big函數(shù)(2)使用索引視圖能提高數(shù)據(jù)庫效率(3)如果視圖引用任何.確定性函數(shù),則不能在視圖上創(chuàng)建聚集索引1.2.3, 分區(qū)視圖-創(chuàng)建分區(qū)視圖-將表進(jìn)行行分割,emp表分解為emp1和emp2select*intoemp1fromempwhereempno=7782goCREATEVIEWvempwith1and2ASSELECT*FROMemp1UNIONALLSELECT*FROMemp2注意:分區(qū)視圖在sqlserver2005M

5、被分區(qū)表替代新建說由a a 國& ZD 二 g rployttE tl2 23 疝。,5年9ffl w 王回IMHH31ATION 50(二、存儲(chǔ)過程1.3、在ManagementStudio中倉Li建視圖3Ci)n,nRnAftriH_oCMIMPOATIOM_SCXIMFOMUHON_SO(IKFOWAnUNRIMFOFWAnON.SCM存儲(chǔ)過程是數(shù)據(jù)庫系統(tǒng)中封裝的代碼模塊,它采用T-SQL語言來編寫,經(jīng)編譯后存放在數(shù)據(jù)庫服務(wù)器中,具有很好的可重用性,可用于高效地完成某些操作存儲(chǔ)過程可以充分利用服務(wù)器的高性能運(yùn)算能力,無需把大量的結(jié)果集送往客戶端進(jìn)行處理,大大減少了網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)拈_銷,提高

6、了應(yīng)用程序訪問數(shù)據(jù)庫的速度和效率2.1、 使用存儲(chǔ)過程的好處與特點(diǎn)存儲(chǔ)過程是已編譯過的,并在服務(wù)器上注冊(cè)和保存的代碼模塊,因面比一般的程序語句執(zhí)行起來速度更快,同時(shí)減少了網(wǎng)絡(luò)流量,節(jié)省了大量可間和數(shù)據(jù)流塞。存儲(chǔ)過程可以使用控制語句和變量,并且在一個(gè)存儲(chǔ)過程中可以調(diào)用其他存儲(chǔ)過程,使得用戶可以進(jìn)行模塊化程序龍計(jì),大大提嵩了用戶設(shè)計(jì)愈序的效率。存儲(chǔ)過程具有安全特性和所有權(quán)鏈接,可以執(zhí)行所有的權(quán)馥翳鼠翻驪藕麻儲(chǔ)過程的權(quán)限但不擁有存儲(chǔ)過程可以提高應(yīng)用程序的安全性,防止SQL嵌入式攻擊存儲(chǔ)過程可以允許代碼綁定,引用當(dāng)前不存在的對(duì)象,這些對(duì)象僅在存儲(chǔ)過程執(zhí)行時(shí)存在2.2、 存儲(chǔ)過程的分類用戶自定義的存儲(chǔ)過

7、程:最主栗的存儲(chǔ)過程系統(tǒng)存儲(chǔ)過程:sp_前綴,系統(tǒng)預(yù)定義擴(kuò)展存儲(chǔ)過程:保存在DLL動(dòng)態(tài)鏈接庫中并從動(dòng)態(tài)鏈接庫中執(zhí)行的C+程序代碼,用于擴(kuò)展SQLSERVER2005,性育旨,以字符xp_開頭,通常與其它系統(tǒng)存儲(chǔ)過程一起使用虛過程序集調(diào)用。2.3、 存儲(chǔ)過程的設(shè)計(jì)規(guī)則CREATEPROCEDURE定義本身可包/舌除下歹”CREATE語句以外的任何數(shù)量和類型的SQL語句,存儲(chǔ)過程中的任意地方都不能使用下列語句:CCREATERULECREATEDEFAULTCREATEFUNCTIONCREATETRIGGERCREATEPROCEDURECREATEVIEWUSEDATABASE2.4、 創(chuàng)建存

8、儲(chǔ)過程的語法CREATEPROC|PROCEDUREschema_cedure_nameparametertype_schema_name.data_typeOUTPUT5.nAS2.5、 建和使用存儲(chǔ)過程-創(chuàng)建不帶參數(shù)的存儲(chǔ)過程itexists(selectnamefromsysobjectswherename二pro_name,andtype=*p*)dropprocedurepro_nameGocreateprocedurepro_nameasdeclarev_namevarchar(10),v_saldecimal(10,2)beginbegintryselectv_n

9、ame=ename.v_sal=salfromempwhereempno=7369ifv_salv_namevarchar(10),(3v_saldecimal(10,2)beginbegintryselectv_name=ename,(5)v_sal=salfromempwhereempno=(5)vempnoif(2v_sal2500printI:資超過2500elseprint資少于2500endtrybegincatchprint鋪誤號(hào):l+cast(errorasvarchar(10)print錯(cuò)誤內(nèi)容:+error_message()endcatchend使用存儲(chǔ)過程pro_nam

10、e7369一創(chuàng)建帶檢出參數(shù)的存儲(chǔ)過程ifexists(selectnamefromsysobjectswherename=*proname*andtype=p*)dropprocedurepro_nameGocreateprocedurepro_namevempnoint,v_namevarchar(13)output,v_saldecimal。0,2)outasbeginbegintryselectv_name=ename.v_sal=salfromempwhereempno=vempnoendtrybegincatchprint錯(cuò)誤*J:,*cast(errorasvarchar(10)p

11、rint錯(cuò)誤面容:+error_message()endcatchend-使用存儲(chǔ)過程declarev_namevarchar(10).v_saldecimal。0.2)execpro_name7369,v_nameoutput.v_saloutputifv_sal2500print,I.資超過2500elseprint,I:資少于2500go2.6存儲(chǔ)過程的執(zhí)行過程和重編譯存儲(chǔ)過程在第1次執(zhí)行時(shí),要經(jīng)過語法分析、解析、編譯和執(zhí)行共4個(gè)階段,當(dāng)添加新的索引或更期某些列數(shù)值之后,存儲(chǔ)過程有不自動(dòng)執(zhí)行優(yōu)化,可以強(qiáng)制徐卜,次啟動(dòng)服霧器前次編譯該春儲(chǔ)過程,以更新原有的寂行計(jì)劃??梢杂腥N方式實(shí)現(xiàn):-

12、-1使用spjecompHe系統(tǒng)存儲(chǔ)過程execsp_recompilehh- 2創(chuàng)建存儲(chǔ)過程時(shí)增加withrecompile選項(xiàng)ALTERproceduredbo.hhwithrecompileasbeginselectcounty),countfromaaend- 3執(zhí)行重新編譯exechhwithrecompile2.7 加密存儲(chǔ)過程-使用withencrypVon語句對(duì)存儲(chǔ)過程進(jìn)行加密ALTERproceduredbo.hhwithrecompile,encryptionasbeginselectcount(*)count,fromaaend2.8 使用擴(kuò)展存儲(chǔ)過程使用外圍配置器配置,

13、如下圖:敲入execxp_cmdshelldirc:u結(jié)果是列出c盤而具體內(nèi)容相干的還有幾個(gè)都是以xp_開頭,具體可以查詢msdn文檔。-比如使用xpjileexist判斷文件是否存在usemasterdeclareretintexecxp_fileexistHeAtempweb.configretoutputprintret三、用戶自定義函數(shù)用戶自定義函數(shù)是接受參數(shù)、執(zhí)行操作(例如復(fù)雜計(jì)算)并將操作結(jié)果以值的形式返回的子程序。返回值可以是單個(gè)標(biāo)量值或結(jié)果集。SQLServer2005支持3木中類型的Transact-SQL用戶自定義函數(shù):標(biāo)量函數(shù)、內(nèi)嵌表值函數(shù)和多語句表值函數(shù)。在SQLSer

14、ver中使用用戶自定義函數(shù)有以下優(yōu)點(diǎn):允許模塊化程序設(shè)計(jì)。執(zhí)行速度更快。減少網(wǎng)絡(luò)流量。3.1創(chuàng)建用戶自定義函數(shù)(1)標(biāo)量函數(shù)標(biāo)量型函數(shù)返回個(gè)確定類型的標(biāo)量值其返回值類型為除TEXT、NTEXT、IMAGE、CURSOR.TIMESTAMP、table夕卜的其它數(shù)據(jù)類型。函數(shù)體語句定義在BEGIN-END語句內(nèi),其中包含了可以返回值的TransactSQL命令創(chuàng)建標(biāo)量函數(shù)的語法如下:CHtA11FUNCIIONschema_name.Jtunction_name(parameter_nameAStype_schema_name.parameter_data_type=default-.n)RET

15、URNSreturn_data_typeWITH,.nAS一BEGINfunction_bodyRETURNscalarexpressionEND其中各參數(shù)的角義如下。 schema_name用戶仃定義函數(shù)所屬的架構(gòu)的名稱。 function_name用戶rT定義函數(shù)的名稱。 parameter_name用戶門定2函數(shù)的參數(shù)。type_schema_name.parameter_data_type參藪的數(shù)據(jù)滅型及其所屈的架構(gòu),前者為可選項(xiàng)。=default參數(shù)的默認(rèn)值。 return_data_type用戶?I定義標(biāo)義函數(shù)的返回值。 function_body函數(shù)體,指定一系列定義函數(shù)值的Tr

16、ansact-SQL語句。 scalar_expression指定標(biāo)定函數(shù)返回的標(biāo)的值。 指定函女將具有以卜.一個(gè)或多個(gè)選項(xiàng),共有兩個(gè):ENCRYPTION指示數(shù)據(jù)庫引擎對(duì)包含CREATEFUNCTION語句文本的目錄視圖列進(jìn)行加密。SCHEMABINDING指定將函數(shù)綁定到其引用的數(shù)據(jù)庫對(duì)象。創(chuàng)建和使用標(biāo)收函數(shù)創(chuàng)建函數(shù)ifexists(selectnamefromsysobjectswherename=*get_salary_by_deplno*)dropfunctionget_salary_by_deptnogocreatefunctionget_salary_by_deptno(v_de

17、pt_noint)Returnsintasbegindeclarev_sumintselectvsum=sum(sal)fromempwheredeptno=v_dept_noif(a)error0beginreturn-1-其中返回-1示函出錯(cuò)了endreturnv_sumend使用函數(shù)printdbo.get_salary_by_deptno(10)(2)內(nèi)嵌表值函數(shù)內(nèi)聯(lián)表值型函數(shù)以表的形式返回一個(gè)返回值,即它返回的是一個(gè)表內(nèi)聯(lián)表值型函數(shù)沒有由BEGIN-END語句括起來的函數(shù)體。其返回的表由一個(gè)位于RETURN子句中的SELECT命令段從數(shù)據(jù)庫中篩選出來。內(nèi)聯(lián)表值型函數(shù)功能相當(dāng)于一個(gè)參數(shù)

18、化的視圖。創(chuàng)建內(nèi)嵌表值函數(shù)的語法如下:CREATEFUNCTIONschema_name.function_name(parameter_nameAStype_schemaname.parameterdatatype=default,.n)RETURNSTABLEWITH,.nASRETURN(select_stmt)其中各參數(shù)的含義如下。schema_namefunction_nameparameter_nametype_schema_name.parameter_data_type=defaultvfunction_option的含義與標(biāo)量函數(shù)中的各參數(shù)相同。 TABLE指定表值函數(shù)的返回

19、值為表。 select_stmt定義內(nèi)嵌表值函數(shù)的返回值的單個(gè)SELECT語句。使用內(nèi)嵌表值函數(shù):dropfunctionf_get_empgoCREATEFUNCTIONf_get_emp()RETURNStableasRETURN(select*fromemp)注意:返回table數(shù)據(jù)類型的用戶定義函數(shù)實(shí)際上是視圖,可以對(duì)返11的數(shù)據(jù)直接更新,并影響基表。(3)多語句表值函數(shù)多聲明表值型函數(shù)可.以看作標(biāo)量型和內(nèi)聯(lián)表值型函數(shù)的結(jié)合體。它的返回值是一個(gè)表,但它和林量型函數(shù)一樣有一個(gè)用BEGIN-END語句括號(hào)來的函數(shù)體,返回值的衣中的數(shù)據(jù)是由函數(shù)體中的語句插入的。山詼可見,爸可以進(jìn)行多次在詢,

20、對(duì)數(shù)據(jù)進(jìn)行多次篩選與合并,彌補(bǔ)了內(nèi)聯(lián)表值型函數(shù)的不足。創(chuàng)建多語句表值函數(shù)的語法如下:CREATEFUNCTIONschema_name.function_name(S)pArAmAtftr_namRAStypeschemaname.1parameterdatatype=default7.n)一RETURNSreturn_variableTABLEWITH,.nASBEGINfunction_bodyRETURNEND其中各參數(shù)的含義如下。schema_namefunction_nameparameter_nametype_schema_name.parameter_data_typ=defau

21、ltvfunction_option的含義與標(biāo)量函數(shù)中的各參數(shù)相同。 TABLE指定表值函數(shù)的返回值為表。在多語句表值函數(shù)中,return_variable是TABLE變量,用于存儲(chǔ)和匯總應(yīng)作為函數(shù)值返回的行。 定義表數(shù)加;類應(yīng)。表聲明包含列定義和列約束(或表約束)。(3)function_body函數(shù)體,指定一系列定義函數(shù)值的TransactSQL語句。使用多語句表值函數(shù):dropfunctionf_get_empgoCREATEFUNCTIONf_get_emp()RETURNSabctable(empnoint)asbegininsertintoabcselectempnofromemp

22、returnendselect*fromdbo.f_get_emp()3.2修改刪除用戶自定義函數(shù)使用ALTERFUNCTION語句可以修改用戶自定義函數(shù)的定義,ALTERFUNCTION句的語法及參數(shù)與CREATEFUNCTION的語法及參數(shù)類似。使用DROPFUNCTION語句可以從當(dāng)前數(shù)據(jù)庫中刪除一個(gè)或多個(gè)用戶自定義函數(shù)。33定義函數(shù)與存儲(chǔ)過程的 區(qū)別存儲(chǔ)過程與函數(shù)主要區(qū)別于返回值方面:(1)存儲(chǔ)過程可以使用output參數(shù)返回多個(gè)值,而函數(shù)只可以返叵|個(gè)加,木可以使南output參數(shù)(2)關(guān)于返回結(jié)果集方面的區(qū)別:存儲(chǔ)過程中雖然沒有return語句,但是也可以返回結(jié)果集。比女II:cr

23、eateproceduresp1asbeginselectname,fidJkfromtable_1print111selecttestname,fidfromtable_2end這個(gè)結(jié)果,可.以被被使用:insertintotable_3(name,fid_fk)execsp1對(duì)廠自定義函數(shù),它必須指定定義為返回值為table類型的數(shù)據(jù)v.。且在代班顯式的網(wǎng)該table中insert:或者,只是制定返固他為table類型,彳、指定return而對(duì)尊變狀,匕接return該表.即:createfunctionfn1()returnstableasreturnselectfid.testname

24、fromtable_2或齊createfunctionfn1()returnsvtable(fidintprimarykeynotnull,testnamenchar(10)asbegininsertintovselectfid,testnamefromtable_2End使用insertintotable3select*fromfn1()它們的區(qū)別:(1)前者是返回杳詢的結(jié)果集合,只是作為一系列功能的副產(chǎn)品:而后者,就是為了返回值而創(chuàng)建的。(2)前若返回俏不能被仃接引用:而是必須被使川為execspl或齊insertintotable的形式使用.后者這回值可以黛直接引用.四、游標(biāo)在數(shù)據(jù)庫中,

25、游標(biāo)是一個(gè)十分重要的概念。游標(biāo)實(shí)際上是一種能從包括多條數(shù)據(jù)記錄的結(jié)果集中每次提取一條記錄的機(jī)制。當(dāng)決定對(duì)結(jié)果集進(jìn)行處理時(shí),必須聲明一個(gè)指向該結(jié)果集的游標(biāo)。4.1、 游標(biāo)的分類MSSQLSERVER支持三種類型的游標(biāo):Transact_SQL游標(biāo),API服務(wù)器游標(biāo)和客戶游標(biāo)。一其中Transact_SQL游標(biāo)就是我們同樣使用的游標(biāo)一Transact_SQL游標(biāo)是由DECLARECURSOR語法定義、主要用在Transact_SQL腳本、存儲(chǔ)過程和觸發(fā)器中。4.2、 TransactSQL游標(biāo)每一個(gè)游標(biāo)必須仃四個(gè)組成部分這四個(gè)關(guān)鍵部分必須符合下面的順序:1 .DECLARE游標(biāo)2.OPEN游標(biāo)3

26、.從一個(gè)游標(biāo)中FETCH佶息4 .CLOSE或DEALLOCATE游標(biāo)通常我們使用DECLARE來聲明一個(gè)游標(biāo)聲明一個(gè)游標(biāo)主要包括以下主要內(nèi)容:游標(biāo)名字?jǐn)?shù)據(jù)來源(表和列)選取條件屬性(僅讀或可修改)其語法格式如下:DECLAREcursor_nameINSENSITIVESCROLLCURSORFORselectstatementFORREADONLY|UPDATEOFcolumn_name,.n其中:Acursorname指游標(biāo)的名字。INSENSITIVE表明MSSQLSERVER會(huì)將游標(biāo)定義所選取出來的數(shù)據(jù)記錄存放在,臨時(shí)表內(nèi)(建立在tempdb數(shù)據(jù)庫卜)。對(duì)該游標(biāo)的讀取操作皆山臨時(shí)表來

27、應(yīng)答。因此,對(duì)基本表的修改并不影響游標(biāo)提取的數(shù)據(jù),崗游標(biāo)不會(huì)隨著基本表內(nèi)容的改變而改變,同時(shí)也無法通過游林米更新基本表。收律不使用該保留字,那么對(duì)基本表的更新、刪除甄春反映到游標(biāo)市。SCROLI表明方的提取操作(如FIRST、LAST、PRIOR.NEXT、RELATIVE.ABSOLUTE)都可用如果。使用該保留字,那么只能進(jìn)行NEXT提取操作、由此可見.SCROLL極大地增加了提取數(shù)據(jù)的是活性,可以隨意讀取結(jié)果集中的任行數(shù)據(jù)汕泉,而不必關(guān)閉再重開游標(biāo)。select_statement是定好吉果集的SELECT語句。READONLY&明不允許游標(biāo)內(nèi)的數(shù)據(jù)被更新盡管在缺省狀態(tài)卜.游標(biāo)是允許更新

28、的。UPDATEOFcolumnname,.nl定義在游標(biāo)中可被修改的列,如果不指出要更新的列,那么所仃的列都將被更新,-卜.面是一個(gè)游標(biāo)的例子-1DECLAREtempcursorCURSORFORselectsal,commfromempwheresal1000declaresaldecimal。0,2),commintbegin-2opentempcursor;-3fetchnextfromtempcursorintosal,commprint,資為:+cast(salasvarchar(10)print,補(bǔ)助為:+cast(commasvarchar(10)-4closetempcur

29、sorDEALLOCATEtempcursorEnd- 在這里例子中明顯有一處缺陷,就是只能取到一條記錄- F面增加循環(huán)和判斷DECLAREtempcursorCURSORFORselectsal,commfromempwheresal1000declaresaldecimal。0,2),commintbeginopentempcursor;fetchnextfromtempcursorintosal,commwhile(g(5)fetch_status=0beginprint工資為:+cast(salasvarchar(10)print補(bǔ)助為1+casXcommasvarchar(10)fe

30、tchnextfromtempcursorintosal,commendclosetempcursorDEALLOCATEtempcursorEnd- 注意:fetch_status是一個(gè)游標(biāo)專用的系統(tǒng)函數(shù),用于表示是否取到值五、觸發(fā)器MicrosoftSQLServer2005系統(tǒng)提供了兩種強(qiáng)制業(yè)務(wù)邏輯和數(shù)據(jù)完整性的機(jī)制,即約束技術(shù)和觸發(fā)器技術(shù)。5.1、 觸發(fā)器的作用觸發(fā)器是一種特殊的存儲(chǔ)過程,它在特定語言事件發(fā)生時(shí)自動(dòng)執(zhí)行,通常用于實(shí)現(xiàn)強(qiáng)制業(yè)務(wù)規(guī)則和數(shù)據(jù)完整性。觸發(fā)器支持嵌套,最多可以嵌套32層5.2、 觸發(fā)器的分類DML觸發(fā)器:DML觸發(fā)器是當(dāng)數(shù)據(jù)庫服務(wù)器中發(fā)生數(shù)據(jù)操作語言(DML)事件

31、時(shí)要執(zhí)行的操作。DML事件包括對(duì)表或視圖發(fā)出的UPDATE、INSERT或DELETE語句CAFTER觸發(fā)器:指SQL語句成功執(zhí)行之后觸發(fā)OINSTEADOF觸發(fā)器。DDL觸發(fā)器521、DMLAFTER觸發(fā)器DMLAFTER觸發(fā)器是當(dāng)數(shù)據(jù)庫服務(wù)器中發(fā)生數(shù)據(jù)操作語言(DML)事件時(shí)要執(zhí)行的操作,成功執(zhí)行之后觸發(fā)。特別注意:SQLServer觸發(fā)器中可以擁有事務(wù)回滾功能,當(dāng)有錯(cuò)誤發(fā)生時(shí),執(zhí)行rollback,這樣導(dǎo)致DML失效。.DMLAFTER角蟲發(fā)器的語法創(chuàng)建DML觸發(fā)器的語法格式為:CREATETRIGGERschema_name.trigger_nameONtableFOR|AFTERINSERT,UPDATE,DELETEASsql_statement其中各參數(shù)的含義如下。(1) schema_nameDML觸爰器所屬架構(gòu)的名稱。(2) trigger_name觸發(fā)器而名稱。(3) table對(duì)其執(zhí)行DML觸發(fā)器的表。(4) AFTER指定DML觸發(fā)器僅在觸發(fā)SQL語句中指定的所有操作都已成功執(zhí)行時(shí)才被激發(fā)。如果寫FOR則默認(rèn)為AFTER(5) INS

溫馨提示

  • 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)論