第存储过程和触发器.pptx

上传人:一*** 文档编号:72009093 上传时间:2023-02-08 格式:PPTX 页数:81 大小:1.89MB
返回 下载 相关 举报
第存储过程和触发器.pptx_第1页
第1页 / 共81页
第存储过程和触发器.pptx_第2页
第2页 / 共81页
点击查看更多>>
资源描述

《第存储过程和触发器.pptx》由会员分享,可在线阅读,更多相关《第存储过程和触发器.pptx(81页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、会计学1第第 存储存储(cn ch)过程和触发器过程和触发器第一页,共81页。本章本章(bn zhn)难点难点n n有参存储过程(guchng)的创建、执行n n触发器的触发时机n nDELETED与INSERTED表第1页/共81页第二页,共81页。第第10章章 存储存储(cn ch)过程和触发器过程和触发器存储(cn ch)过程的概念1建立和执行存储(cn ch)过程2存储过程的管理与维护3触发器的概念4创建和应用DML触发器5触发器的管理与维护6DDL触发器7事务8第2页/共81页第三页,共81页。10.1 10.1 存储存储存储存储(cn ch(cn ch)过程的概念过程的概念过程的概

2、念过程的概念在数据库的实际应用在数据库的实际应用(yngyng)中,常需要重复执行中,常需要重复执行一些程序段。为了方便用户,也为了提高执行效率,一些程序段。为了方便用户,也为了提高执行效率,SQLServer2005中的用户自定义函数、存储过中的用户自定义函数、存储过程、触发器可以用来满足这些应用程、触发器可以用来满足这些应用(yngyng)需求。需求。第3页/共81页第四页,共81页。10.1 10.1 存储过程存储过程存储过程存储过程(guchng)(guchng)的概念的概念的概念的概念举例举例(jl):USE XSSELECT 学号,姓名(xngmng),系名,总学分FROM XSD

3、AWHERE 系名=信息ORDER BY 总学分 DESC1.将将T-SQL语句发送到服务器语句发送到服务器2.服务器编译服务器编译T-SQL语句语句3.优化产生查询执行计划优化产生查询执行计划4.数据库引擎执行查询计划数据库引擎执行查询计划5.执行结果返回客户端执行结果返回客户端第4页/共81页第五页,共81页。10.1 10.1 存储存储存储存储(cn ch(cn ch)过程的概念过程的概念过程的概念过程的概念第5页/共81页第六页,共81页。10.1 10.1 存储过程存储过程存储过程存储过程(guchng)(guchng)的概念的概念的概念的概念EXEC xxEXEC xxEXEC x

4、xEXEC xxEXEC xxEXEC xxEXEC xxEXEC xxEXEC xxEXEC xxEXEC xxEXEC xxEXEC xx第6页/共81页第七页,共81页。10.1 10.1 存储过程存储过程存储过程存储过程(guchng)(guchng)的概念的概念的概念的概念第7页/共81页第八页,共81页。10.1 10.1 存储存储存储存储(cn ch(cn ch)过程的概念过程的概念过程的概念过程的概念n n存储过程的优点n n执行(zhxng)效率高n n统一的操作流程n n重复使用n n安全性第8页/共81页第九页,共81页。10.1 10.1 存储过程存储过程存储过程存储过

5、程(guchng)(guchng)的概念的概念的概念的概念n n存储过程的分类n n系统存储过程n n 存储在master数据库中以sp_为前缀n n用户自定义存储过程n n 用户存储过程是用户根据需要,在自己的普通数据库中创建,是 用 来 完 成 某 项 特 定(tdng)任务的存储过程。第9页/共81页第十页,共81页。10.1 存储存储(cn ch)过程的概念过程的概念n n存储过程与视图比较n n可以(ky)在单一的存储过程中执行一系列T-SQL语句,而视图只能是SELECT。n n存储过程可以(ky)接受参数,并能返回单个或多个结果集以及返回值,视图不能接受参数,只能返回结果集。n

6、n一般将经常用到的多个表的链接查询定义为视图,而存储过程完成复杂的一系列的处理,在存储过程中也会经常使用到视图。第10页/共81页第十一页,共81页。第第10章章 存储存储(cn ch)过程和触发器过程和触发器存储(cn ch)过程的概念1建立和执行存储(cn ch)过程2存储过程的管理与维护3触发器的概念4创建和应用DML触发器5触发器的管理与维护6DDL触发器7事务8第11页/共81页第十二页,共81页。10.2 10.2 建立和执行建立和执行建立和执行建立和执行(zhxng)(zhxng)存储过程存储过程存储过程存储过程1、创建存储过程、创建存储过程创建存储过程时,需要注意下列事项:创建

7、存储过程时,需要注意下列事项:(1)只能在当前数据库中创建存储过程。)只能在当前数据库中创建存储过程。(2)数据库的所有者可以创建存储过程,也可以授权其他用户创建存储过程。)数据库的所有者可以创建存储过程,也可以授权其他用户创建存储过程。(3)存储过程是数据库对象,其名称必须遵守标识符命名规则。)存储过程是数据库对象,其名称必须遵守标识符命名规则。(4)不能将)不能将CREATEPROCEDURE语句与其它语句与其它SQL语句组合到单个批处理中。语句组合到单个批处理中。(5)创建存储过程时,应指定)创建存储过程时,应指定(zhdng)所有输入参数和调用过程或批处理返回的输出参数、执行数据库操作

8、的编程语句和返回至调用过程或批处理以表明成功或失败的状态值。所有输入参数和调用过程或批处理返回的输出参数、执行数据库操作的编程语句和返回至调用过程或批处理以表明成功或失败的状态值。第12页/共81页第十三页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch(cn ch)过程过程过程过程(1)语法(yf)格式:CREATE PROC EDURE 存储存储(cn ch)过程名过程名 输入参数输入参数 数据类型数据类型 =defaultOUTPUT,n AS sql_statement .n 第13页/共81页第十四页,共81页。10.2 10.2

9、建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储过程和执行存储过程第14页/共81页第十五页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch(cn ch)过程过程过程过程例例10.110.1从从xsglxsgl数据库的三个表中查询,返回学生学号、姓名、课程名、数据库的三个表中查询,返回学生学号、姓名、课程名、成绩成绩(chngj)(chngj)。该存储过程实际上只返回一个查询信息。该存储过程实际上只返回一个查询信息。USE xsglGOCREATE PROCEDURE stu_cjASSELECT xs.学号学号

10、,姓名姓名(xngmng),课程名课程名,成绩成绩 FROM xs INNER JOIN cj ON xs.学号学号=cj.学号学号 INNER JOIN kcON cj.课程号课程号=kc.课程号课程号GO第15页/共81页第十六页,共81页。10.2 10.2 建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储过程和执行存储过程2、执行存储(cn ch)过程EXEC 存储(cn ch)过程名 参数值,n第16页/共81页第十七页,共81页。10.2 10.2 建立和执行建立和执行建立和执行建立和执行(zhxng)(zhxng)存储过程存储过程存储过程存储过程第1

11、7页/共81页第十八页,共81页。第18页/共81页第十九页,共81页。第19页/共81页第二十页,共81页。第20页/共81页第二十一页,共81页。第21页/共81页第二十二页,共81页。10.2 10.2 建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储过程和执行存储过程例例10.310.3从从xsglxsgl数据库的三个表中查询数据库的三个表中查询(chxn)(chxn)某人指定课程的成绩。某人指定课程的成绩。CREATE PROCEDURE stu_cj1 name char(10),cname char(16)ASSELECT xs.学号学号,姓名姓名(

12、xngmng),课程名课程名,成绩成绩 FROM xs INNER JOIN cj ON xs.学号学号=cj.学号学号INNER JOIN kcON cj.课程号课程号=kc.课程号课程号 WHERE xs.姓名姓名(xngmng)=name AND kc.课程课程=cnameGO第22页/共81页第二十三页,共81页。第23页/共81页第二十四页,共81页。第24页/共81页第二十五页,共81页。第25页/共81页第二十六页,共81页。第26页/共81页第二十七页,共81页。第27页/共81页第二十八页,共81页。第28页/共81页第二十九页,共81页。第29页/共81页第三十页,共81页

13、。10.2 10.2 建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储过程和执行存储过程练习:在xs数据库中,创建一个存储(cn ch)过程jsjzf_p,用于查询信息系学生的总学分的排名情况(从高分到低分)。USE XS GO CREATE PROC jsjzf_p AS SELECT 学号学号,姓名姓名(xngmng),系名系名,总学分总学分 FROM xsda WHERE 系名系名=信息信息 ORDER BY 总学分总学分 DESC第30页/共81页第三十一页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch

14、(cn ch)过程过程过程过程练习:练习:使用使用(sh(sh yng)yng)输入参数,创建查询存储过程输入参数,创建查询存储过程xzf_pxzf_p,用于,用于查询指定某系学生总学分的排名情况(由高到低)。查询指定某系学生总学分的排名情况(由高到低)。USE XS GO CREATE PROC xzf_p xiname char(10)AS SELECT 学号学号,姓名姓名(xngmng),系名系名,总学分总学分 FROM xsda WHERE 系名系名=xiname ORDER BY 总学分总学分 DESC第31页/共81页第三十二页,共81页。10.2 10.2 建立和执行建立和执行建

15、立和执行建立和执行(zhxng)(zhxng)存储过程存储过程存储过程存储过程练练习习:使使用用输输入入参参数数,创创建建存存储储过过程程grkccj_pgrkccj_p,查查询询(chxn)(chxn)某人指定课程的成绩和学分。某人指定课程的成绩和学分。USE XS GO CREATE PROC grkccj_p name char(8),kcname char(20)AS SELECT xsda.学号学号,姓名姓名,课程名称课程名称,成绩成绩(chngj),总学分总学分 FROM xsda,xscj,kcxx WHERE xsda.学号学号=xscj.学号学号 AND xscj.课程编号课

16、程编号=kcxx.课程编号课程编号 AND 姓名姓名=name AND 课程名称课程名称=kcname第32页/共81页第三十三页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch(cn ch)过程过程过程过程例例:参数传递技巧参数传递技巧 在在执执行行存存储储过过程程时时,若若未未指指明明参参数数名名称称,则则必必须须依依照照存存储储过过程程所所需需的的参参数数依依次次(yc)(yc)传传过过去去,而而且且除除非非该该参参数数指指定定有有默认值,否则不可省略。默认值,否则不可省略。CREATE PROCEDURE testa int,b in

17、t=NULL,c int=3ASSELECT a,b,cGOEXEC testEXEC test 1EXEC test 1,DEFAULTEXEC test 1,DEFAULT,5EXEC test 1,2,3第33页/共81页第三十四页,共81页。10.2 10.2 建立和执行建立和执行建立和执行建立和执行(zhxng)(zhxng)存储过程存储过程存储过程存储过程例例:创创建建(chungjin)(chungjin)一一个个存存储储过过程程xscj_pxscj_p,查查询询指指定定学学生生的的学学号号,姓姓名名,所所选选课课程程名名称称及及该该课课程程的的成成绩绩,默默认认为为查查询刘姓学

18、生的学习情况。询刘姓学生的学习情况。CREATE PROCEDURE xscj_pname varchar(30)=刘刘%AS SELECT xsda.学号学号,姓名姓名(xngmng),课程名称课程名称,成绩成绩FROM xsda,xscj,kcxxWHERE xsda.学号学号=xscj.学号学号AND xscj.课程编号课程编号=kcxx.课程编号课程编号AND 姓名姓名(xngmng)LIKE nameGO 第34页/共81页第三十五页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch(cn ch)过程过程过程过程例:执行存储(cn c

19、h)过程xscj_pEXEC xscj_pEXEC xscj_p 李李%EXEC xscj_p 王红王红EXEC xscj_p%第35页/共81页第三十六页,共81页。10.2 10.2 建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储过程和执行存储过程例例10.510.5:创建:创建(chungjin)(chungjin)一个存储过程用于计算指定学生各科成绩一个存储过程用于计算指定学生各科成绩的总分,存储过程中使用了一个输入参数和一个输出参数。的总分,存储过程中使用了一个输入参数和一个输出参数。CREATE PROCEDURE stu_sum name char

20、(10),total int OUTPUTASSELECT total=SUM(成绩成绩(chngj)FROM xs,cjWHERE 姓名姓名=name AND xs.学号学号=cj.学号学号 GROUP BY xs.学号学号GO第36页/共81页第三十七页,共81页。10.2 10.2 建立和执行建立和执行建立和执行建立和执行(zhxng)(zhxng)存储过程存储过程存储过程存储过程例10.5中存储(cn ch)过程的执行方法为:USE xsglDECLARE total intEXECUTE stu_sum 程明程明,total OUTPUTSELECT 程明程明,totalGO第37页

21、/共81页第三十八页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch(cn ch)过程过程过程过程练习:创建一个存储过程(guchng)kcavg_p,用于查询所有学生所学指定课程的平均成绩,并将该平均成绩返回。CREATE PROC kcavg_p kcname char(20),kcavg decimal(3,1)output AS SELECT kcavg=avg(成绩成绩)FROM xscj,kcxx WHERE xscj.课程课程(kchng)编号编号=kcxx.课程课程(kchng)编号编号 and 课程课程(kchng)名称名称

22、=kcname第38页/共81页第三十九页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行存储建立和执行存储(cn ch(cn ch)过程过程过程过程练习:执行存储过程kcavg_p,查询(chxn)计算机文化基础课程的平均分。declare avg decimal(3,1)exec kcavg_p 计算机文化基础计算机文化基础,avg outputSELECT avg as 计算机文化基础的平均计算机文化基础的平均(pngjn)成成绩绩第39页/共81页第四十页,共81页。10.2 10.2 建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储

23、过程和执行存储过程课堂练习:1.在Sales数据库中,创建存储过程proc_Employees,查询所有的员工信息。2.创建一个带有输入参数的存储过程proc_goods,查询指定员工所进商品(shngpn)信息。3.创建一个带有输入和输出参数的存储过程proc_GNO,查询指定厂商指定名称的商品(shngpn)所对应的商品(shngpn)编号。第40页/共81页第四十一页,共81页。10.2 10.2 建立建立建立建立(jinl)(jinl)和执行存储过程和执行存储过程和执行存储过程和执行存储过程1.在Sales数据库中,创建存储过程proc_Employees,查询(chxn)所有的员工信

24、息。USE SalesGOCREATE PROC proc_EmployeesASSELECT*FROM Employees-执行执行(zhxng)存储过程存储过程EXEC proc_Employees第41页/共81页第四十二页,共81页。10.2 10.2 建立和执行建立和执行建立和执行建立和执行(zhxng)(zhxng)存储过程存储过程存储过程存储过程2.2.创建一个带有输入参数的存储过程创建一个带有输入参数的存储过程proc_goodsproc_goods,查询,查询(chxn)(chxn)指定员工所进商品信息。指定员工所进商品信息。USE SalesGOCREATE PROC pr

25、oc_goods 员工编号员工编号 char(6)=1001AS SELECT 商品编号商品编号,商品名称商品名称,生产生产(shngchn)厂商厂商,进货价进货价,零售零售价价,数量数量,进货时间进货时间 FROM Goods WHERE 进货员工编号进货员工编号=员工编号员工编号-执行存储过程,查询执行存储过程,查询1001号员工所进的商品的信息号员工所进的商品的信息EXEC proc_goods 员工编号员工编号=default-或或EXEC proc_goods 员工编号员工编号=1001第42页/共81页第四十三页,共81页。10.2 10.2 建立和执行存储建立和执行存储建立和执行

26、存储建立和执行存储(cn ch(cn ch)过程过程过程过程3.3.创建一个带有输入创建一个带有输入(shr)(shr)和输出参数的存储过程和输出参数的存储过程proc_GNOproc_GNO,查,查询指定厂商指定名称的商品所对应的商品编号。询指定厂商指定名称的商品所对应的商品编号。USE SalesGOCREATE PROC proc_GNO 商品名称商品名称 varchar(20),生产厂商生产厂商(chngshng)varchar(30),商品编号商品编号 int OUTPUTAS SELECT 商品编号商品编号=商品编号商品编号 FROM Goods WHERE 商品名称商品名称=商品

27、名称商品名称 AND 生产厂商生产厂商(chngshng)=生产厂商生产厂商(chngshng)-执行存储过程,查询惠普公司打印机商品编号执行存储过程,查询惠普公司打印机商品编号DECLARE 商品编号商品编号 int EXEC proc_GNO 打印机打印机,惠普公司惠普公司,商品编号商品编号 OUTPUTPRINT 该商品编号为:该商品编号为:+STR(商品编号商品编号)第43页/共81页第四十四页,共81页。第第10章章 存储存储(cn ch)过程和触发器过程和触发器存储(cn ch)过程的概念1建立(jinl)和执行存储过程2存储过程的管理与维护3触发器的概念4创建和应用DML触发器5

28、触发器的管理与维护6DDL触发器7事务8第44页/共81页第四十五页,共81页。10.3 10.3 存储存储存储存储(cn ch(cn ch)过程的管理与维护过程的管理与维护过程的管理与维护过程的管理与维护1、查看存储过程的定义信息、查看存储过程的定义信息在在SQLServerManagementStudio的的“对象资源管理器对象资源管理器”中,可以中,可以(ky)在要查看信息的存储过程上单击鼠标右键,在要查看信息的存储过程上单击鼠标右键,在快捷菜单中选择在快捷菜单中选择“属性属性”,弹出,弹出“存储过程属性存储过程属性”窗口窗口.也可以也可以(ky)通过系统存储过程通过系统存储过程sp_h

29、elptext查看存储过程查看存储过程的定义;通过的定义;通过sp_help查看存储过程的参数;通过查看存储过程的参数;通过sp_depends查看存储过程的相关性。查看存储过程的相关性。第45页/共81页第四十六页,共81页。第第10章章 存储存储(cn ch)过程和触发器过程和触发器存储过程(guchng)的概念1建立和执行(zhxng)存储过程2存储过程的管理与维护3触发器的概念4创建和应用DML触发器5触发器的管理与维护6DDL触发器7事务8第46页/共81页第四十七页,共81页。10.4 10.4 触发器的概念触发器的概念触发器的概念触发器的概念(ginin)(ginin)触发器是一

30、种与数据表(库)紧密结合的存储触发器是一种与数据表(库)紧密结合的存储(cnch)过程,当该数据表(库)有新建、更改或删过程,当该数据表(库)有新建、更改或删除事件发生时,所设置的触发器即会自动被执行,除事件发生时,所设置的触发器即会自动被执行,以进行维护数据完整性,或其他一些特殊的数据处以进行维护数据完整性,或其他一些特殊的数据处理工作。理工作。触发器就是当数据表内容(nirng)被更改时,会自动执行的存储过程第47页/共81页第四十八页,共81页。10.4 10.4 触发器的概念触发器的概念触发器的概念触发器的概念(ginin)(ginin)第48页/共81页第四十九页,共81页。10.4

31、 10.4 触发器的概念触发器的概念触发器的概念触发器的概念(ginin)(ginin)n n与存储过程的区别:n n 触发器可以说是当触发器表(库)内容(nirng)被更改时自动执行的存储过程。不能直接被调用,也不能传递或接受参数。第49页/共81页第五十页,共81页。10.4 10.4 触发器的概念触发器的概念触发器的概念触发器的概念(ginin)(ginin)n n触发器的用途n n约束可以直接设置于数据表内,通常不需另外撰写程序。但些方法只能进行比较简单的操作,包括自动填入默认值,确保字段数据不得重复,限制输入值,维护表间的参考完整性等。n n触发器是针对单一数据表所撰写的特殊存储过程

32、,当该数据表发生(fshng)INSERT、UPDATE、DELETE时会自动被触发(执行),以进行各项必要的处理工作,由于是撰写程序,因此无论是简单或复杂的工作都可一手包办。第50页/共81页第五十一页,共81页。10.4 10.4 触发器的概念触发器的概念触发器的概念触发器的概念(ginin)(ginin)n n触发器的功能n n检查所做的更改是否允许n n触发器可以做多样、复杂的检查,例如同时检查多个数据表,或使用IFELSE等来作更有弹性(tnxng)的检查。n n 注:如果数据表同时设有约束及触发器,那么二者都可被执行,至于谁先谁后,则根据触发器的种类而定。当任何一者发现有错误时,也

33、都可以立即回滚该次的数据修改。第51页/共81页第五十二页,共81页。第第10章章 存储存储(cn ch)过程和触发器过程和触发器存储(cn ch)过程的概念1建立(jinl)和执行存储过程2存储过程的管理与维护3触发器的概念4创建和应用DML触发器5触发器的管理与维护6DDL触发器7事务8第52页/共81页第五十三页,共81页。10.4 10.4 触发器的概念触发器的概念触发器的概念触发器的概念(ginin)(ginin)l l进行其他相关数据的更改动作l l例如,当某笔订单被取消时,我们可以利用触发器去自动删除相关的送货单数据,并将业务员的奖金扣除;或是在更改员工(yungng)的薪资时,

34、将更改的日期及原薪资存入另一个薪资修改数据表中。l l发出更改或警告通知l l 例如,当有新员工(yungng)时,触发器可以自动发Mail通知该部门的所有人员;或者当库存量小于安全存量时,即发Mail通知仓库管理员要赶快进货。第53页/共81页第五十四页,共81页。10.4 10.4 触发器的概念触发器的概念触发器的概念触发器的概念(ginin)(ginin)l l自定义错误信息l l当操作不符合约束时,返回给前端应用程序(chngx)的错误信息都是固定的内容。利用触发器,则可以返回我们自定义的错误信息。l l更改原来所要进行的数据操作l l 利用INSTEAD OF触发器,我们可以撰写程序

35、(chngx)来取代原来应该进行的数据操作。例如,当新建一条记录时,可以将该记录的数据另外处理,而不存入数据表中。第54页/共81页第五十五页,共81页。第55页/共81页第五十六页,共81页。10.4 10.4 触发器的概念触发器的概念触发器的概念触发器的概念(ginin)(ginin)触发器就像是仓库的管理员一样,当有货物要进出(jnch)时,管理员即会出面作查核或协调,以维护整个仓库的正常运作。第56页/共81页第五十七页,共81页。第57页/共81页第五十八页,共81页。第58页/共81页第五十九页,共81页。第59页/共81页第六十页,共81页。第第10章章 存储存储(cn ch)过

36、程和触发器过程和触发器存储过程(guchng)的概念1建立(jinl)和执行存储过程2存储过程的管理与维护3触发器的概念4创建和应用DML触发器5触发器的管理与维护6DDL触发器7事务8第60页/共81页第六十一页,共81页。10.6 10.6 触发器的管理触发器的管理触发器的管理触发器的管理(gu(gu nlnl)与维护与维护与维护与维护二、修改二、修改(xig(xig i)i)触发器触发器ALTER TRIGGER 触发器名称 ON 表|视图(sht)FOR|AFTER|INSTEAD OF INSERT ,DELETE,UPDATE AS IF UPDATE(列名)AND|OR UPDA

37、TE(列名).n SQL语句 第61页/共81页第六十二页,共81页。10.6 10.6 触发器的管理触发器的管理触发器的管理触发器的管理(gu(gu nlnl)与维护与维护与维护与维护二、删除二、删除(shnch)(shnch)触发器触发器DROP TRIGGER 触发器名称(mngchng)DROP TRIGGER tr_xscj 第62页/共81页第六十三页,共81页。第63页/共81页第六十四页,共81页。第64页/共81页第六十五页,共81页。第65页/共81页第六十六页,共81页。第第10章章 存储存储(cn ch)过程和触发器过程和触发器存储(cn ch)过程的概念1建立(jin

38、l)和执行存储过程2存储过程的管理与维护3触发器的概念4创建和应用DML触发器5触发器的管理与维护6DDL触发器7事务8第66页/共81页第六十七页,共81页。10.7 DDL10.7 DDL触发器触发器触发器触发器 DDL触发器是SQL Server2005新增的一个触发器类型,像常规触发器一样,DDL触发器将激发(jf)存储过程以响应事件。DDL触发器为响应多种数据定义语言语句而激活,这些语句主要是以CREATE、ALTER和DROP开头的语句。第67页/共81页第六十八页,共81页。10.7 DDL10.7 DDL触发器触发器触发器触发器n n一般来说,在以下几种情况下可以使用一般来说,

39、在以下几种情况下可以使用DDLDDL触发器。触发器。n n(1 1)防止)防止(fngzh(fngzh)数据库架构进行某些修改。数据库架构进行某些修改。n n(2 2)防止)防止(fngzh(fngzh)数据库或数据表被误操作而删除。数据库或数据表被误操作而删除。n n(3 3)希望数据库发生某种情况以响应数据库架构中的更)希望数据库发生某种情况以响应数据库架构中的更改。改。n n(4 4)要记录数据库架构的更改或事件。)要记录数据库架构的更改或事件。n n仅在运行仅在运行DDLDDL触发器的触发器的DDLDDL语句后,语句后,DDLDDL触发器才会激发。触发器才会激发。DDLDDL触发器无法

40、作为触发器无法作为INSTEAD OFINSTEAD OF触发器而使用。触发器而使用。第68页/共81页第六十九页,共81页。10.7 DDL10.7 DDL触发器触发器触发器触发器创建DDL触发器的语法(yf)格式如下:CREATE TRIGGER 触发器名触发器名ON 服务器服务器|数据库数据库WITH ENCRYPTIONFOR|AFTER DDL语句语句(yj)名称名称ASSQL语句语句(yj)第69页/共81页第七十页,共81页。10.7 DDL10.7 DDL触发器触发器触发器触发器例10.16 建立用于保护(boh)数据库xsgl中的数据表不被删除的触发器。CREATE TRIG

41、GER dis_drop_table ON xsgl FOR DROP_TABLEASBEGIN RAISERROR(对不起,对不起,xsgl数据库中的表不能删除数据库中的表不能删除(shnch),16,10)ENDGO第70页/共81页第七十一页,共81页。10.7 DDL10.7 DDL触发器触发器触发器触发器查看和修改DDL触发器(1)作用在当前SQL Server服务器上的DDL触发器所在(suzi)的位置第71页/共81页第七十二页,共81页。10.7 DDL10.7 DDL触发器触发器触发器触发器(2)作用(zuyng)在当前数据库中的DDL触发器所在位置第72页/共81页第七十三

42、页,共81页。第第10章章 存储存储(cn ch)过程和触发器过程和触发器存储过程(guchng)的概念1建立和执行存储(cn ch)过程2存储过程的管理与维护3触发器的概念4创建和应用DML触发器5触发器的管理与维护6DDL触发器7事务8第73页/共81页第七十四页,共81页。10.8 10.8 事务事务事务事务(shw)(shw)事事务务是是作作为为单单个个逻逻辑辑工工作作单单元元(dnyun)(dnyun)执执行行的的一一系系列列操操作作。这这一一系系列列操操作作或或者者都都被被执执行行,或者都不被执行。或者都不被执行。第74页/共81页第七十五页,共81页。10.8 10.8 事务事务

43、事务事务(shw)(shw)n n事务作为一个逻辑工作单元有事务作为一个逻辑工作单元有4 4个属性,称为个属性,称为ACIDACID(原子性、一致性、隔离(原子性、一致性、隔离性和持久性)属性。性和持久性)属性。n n(1 1)原子性。事务必须是原子工作单元,对于其数据修改,要么全都执行,)原子性。事务必须是原子工作单元,对于其数据修改,要么全都执行,要么全都不执行。要么全都不执行。n n(2 2)一致性。事务在完成时,必须使所有的数据都保持一致状态。在相关)一致性。事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都应用于事务的修改,以保持所有数据的完整性。事数据库中,所

44、有规则都应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构都必须是正确的。务结束时,所有的内部数据结构都必须是正确的。n n(3 3)隔离性。由并发事务所做的修改必须与任何其他并发事务所做的修改)隔离性。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。保证事务查看数据时数据所处的状态,只能是一并发事务修改它之隔离。保证事务查看数据时数据所处的状态,只能是一并发事务修改它之前前(zhqin)(zhqin)的状态或者是另一事务修改它之后的状态,而不能查看中间状的状态或者是另一事务修改它之后的状态,而不能查看中间状态的数据。态的数据。n n(4 4)持久性。事务完成之

45、后对系统的影响是永久的。)持久性。事务完成之后对系统的影响是永久的。第75页/共81页第七十六页,共81页。10.8 10.8 事务事务事务事务(shw)(shw)n nSQL ServerSQL Server有以下有以下3 3种事务种事务(shw)(shw)模式。模式。n n(1 1)自动提交事务)自动提交事务(shw)(shw)。这是。这是SQL ServerSQL Server的默认模式。的默认模式。每个单独的每个单独的SQLSQL语句都是一个事务语句都是一个事务(shw)(shw),并在其完成,并在其完成后提交。不必指定任何语句控制事务后提交。不必指定任何语句控制事务(shw)(shw

46、)。n n(2 2)显式事务)显式事务(shw)(shw)。每个事务。每个事务(shw)(shw)均以均以BEGIN BEGIN TRANSACTIONTRANSACTION语句显式开始,以语句显式开始,以COMMITCOMMIT或或ROLLBACKROLLBACK语句显式结束。语句显式结束。n n(3 3)隐性事务)隐性事务(shw)(shw)。通过。通过APIAPI函数或函数或Transact-SQLTransact-SQL的的SET IMPLICIT_TRANSACTION ONSET IMPLICIT_TRANSACTION ON语句,将隐性事务语句,将隐性事务(shw)(shw)模式

47、设置为打开。这样在前一个事务模式设置为打开。这样在前一个事务(shw)(shw)结束结束时新事务时新事务(shw)(shw)隐式启动,但每个事务隐式启动,但每个事务(shw)(shw)仍以仍以COMMITCOMMIT或或ROLLBACKROLLBACK语句显式结束。语句显式结束。第76页/共81页第七十七页,共81页。10.8 10.8 事务事务事务事务(shw)(shw)n n事务组织结构的一般形式如下。事务组织结构的一般形式如下。n n(1 1)定义一个事务的开始:)定义一个事务的开始:BEGIN TRANSACTIONBEGIN TRANSACTION。n n(2 2)提交一个事务:)提

48、交一个事务:COMMIT TRANSACTIONCOMMIT TRANSACTION。n n(3 3)回滚事务:)回滚事务:ROLLBACK TRANSACTIONROLLBACK TRANSACTION。n nBEGIN TRANSACTIONBEGIN TRANSACTION代表一个事务的开始点,事务执行代表一个事务的开始点,事务执行(zhxng)(zhxng)到到COMMIT TRANSACTIONCOMMIT TRANSACTION提交语句后结束事务,提交语句后结束事务,完成对数据库所做的永久改动。如果遇上错误用完成对数据库所做的永久改动。如果遇上错误用ROLLBACK ROLLBAC

49、K TRANSACTIONTRANSACTION语句可以撤消所有改动。语句可以撤消所有改动。第77页/共81页第七十八页,共81页。本章本章本章本章(bn zhn(bn zhn)小结小结小结小结 1.1.存储存储(cn ch(cn ch)过程是一种数据库对象,是存储过程是一种数据库对象,是存储(cn ch(cn ch)在服务器在服务器上的一组预定义的上的一组预定义的SQLSQL语句集合。创建存储语句集合。创建存储(cn ch(cn ch)过程并将过程并将编译好的版本存储编译好的版本存储(cn ch(cn ch)在高速缓存中,可以加快程序的执在高速缓存中,可以加快程序的执行效率。存储行效率。存储

50、(cn ch(cn ch)过程可以有输入、输出参数,可以返回过程可以有输入、输出参数,可以返回结果集以及返回值。通过本章的学习,应掌握各种存储结果集以及返回值。通过本章的学习,应掌握各种存储(cn(cn chch)过程的创建、执行、修改和删除方法。过程的创建、执行、修改和删除方法。第78页/共81页第七十九页,共81页。本章本章本章本章(bn zhn(bn zhn)小结小结小结小结 2.2.触发器是一种特殊的存储过程,当有触发器是一种特殊的存储过程,当有INSERTINSERT、UPDATEUPDATE和和DELETEDELETE操作影响到触发器所保护操作影响到触发器所保护(b(b oh)oh

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理工具

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁