存储过程与触发器(I)

存储过程与触发器(I)

ID:41954747

大小:1.20 MB

页数:37页

时间:2019-09-05

存储过程与触发器(I)_第1页
存储过程与触发器(I)_第2页
存储过程与触发器(I)_第3页
存储过程与触发器(I)_第4页
存储过程与触发器(I)_第5页
资源描述:

《存储过程与触发器(I)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、SQLServer2005数据库应用技术(第二版)第10章存储过程与触发器(2)复习上次课的主要内容创建存储过程的语法及准则创建简单存储过程创建接受输入参数的存储过程创建接受输出参数和返回值的存储过程查看、修改和删除存储过程导入在实际的数据库应用中,往往需要系统具备一些能自动执行的功能,以保证数据的一致性和完整性。问题:如何保证数据的一致性和完整性?约束触发器与CHECK约束、默认值和规则相比较,触发器可以强制实现更加复杂的数据完整性,而且可以参考其他表的字段。在表中如果既有约束又有触发器,则在执行时约束优先于触发器。10-2触发器10.2.1触发器概述1.触发器及优点:触发器是一类特

2、殊的存储过程,它不能直接调用执行,也不能传递与接受参数。触发器定义在一个表(视图)中,该表(视图)称为触发器表。当触发器表执行插入(INSERT)、修改(UPDATE)、DELETE(删除)操作时,触发器被触发,SQLServer就会自动执行触发器所定义的SQL语句,以保证数据的完整性与一致性。当表被删除后,与它关联的触发器一并被删除。10-2触发器优点:触发器是自动的:当对表中的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。触发器可以通过数据库中的相关表进行层叠更改。触发器可以强制限制,这些限制比用CHECK约束所定义的更复杂。2.触发器的限定(1)触发器只在

3、触发它的语句完成后执行,一个语句只能触动一次触发器。(2)如果语句在表中执行违反条件约束或引起错误,触发器不会触动。(3)触发器视为单一事务中的一部份,因此可以由原触发器复原事务,如果在事务过程中侦测到严重的错误(如用户中断联机),则会自动复原整个事务。(4)当触发器触动时若产生任何结果,就会将结果传回其调用的应用程序。10-2触发器10-2-2触发器的分类按引起触发的操作语言的类型,可分为DDL触发器与DML触发器.1、DML触发器根据引起触发的操作又可分为:INSERT触发器、UPDATE触发器、DELETE触发器根据引起触发的时刻可分为:AFTER触发器与INSTEADOF触发器

4、。(1)AFTER触发器(之后触发器)是在执行引起触发的操作(INSERT、UPDATE、DELETE)和处理完约束之后,再执行触发器所定义的操作,即之后触发。当执行INSERT、UPDATE或DELETE语句时,违反约束条件,INSERT、UPDATE或DELETE操作将被中止,所以,AFTER触发器所定义的操作也将不会执行。(2)INSTEADOF触发器(替代触发器):是指当执行引起触发的操作(INSERT、UPDATE、DELETE)时,直接激发触发器,执行触发器所定义的操作,而不再执行INSERT、UPDATE或DELETE语句本身。即将触发器的程序替代了INSERT、UPDA

5、TE或DELETE操作语句执行。10-2触发器10-2-2触发器的分类2、DDL触发器SQLSERVER2005的新增功能DDL触发器的触发事件是在CREATE、ALTER、DROP,以及GRANT、DENY和REVOKE等DDL语句。触发的时间条件只有AFTER。DDL触发器可以用于管理任务,如审核和控制数据库操作。10-2触发器10-2-2触发器的分类3、DDL与DML触发器的相似点(1)两者可以使用相似的Transact-SQL语法创建、修改和删除,它们还具有其他相似的行为,都可以嵌套运行。(2)都可为一个Transact-SQL语句创建多个触发器,同时,触发器和激发它的语句运行

6、在相同的事务中,并可从触发器中回滚此事务。(3)两者均可运行在Microsoft.NETFramework中创建的以及在SQLServer中上载的程序集中打包的托管代码触发器10-2-3创建触发器创建触发器时,应确定以下内容:触发器的名称相关联的表(触发器表)或视图(触发器视图)(对DDL触发器而言,是当前的服务器还是数据库)触发器将何时激发(之前还是之后)(对DDL触发器而言,只有AFTER)激活触发器的数据操作语句(对DDL触发器而言,是数据库定义语句)触发器本身需要完成的功能触发器DML触发器的创建基本格式:CREATETRIGGERtrigger_nameON{table

7、vi

8、ew}--在指定表或视图上创建DML触发器{[FOR

9、AFTER]

10、INSTEADOF}--指出DML触发器类型{[INSERT][,][UPDATE][,][DELETE]}--指出触发的语句AS[IFUPDATE(列名1)[{AND

11、OR}UPDATE(列名2)][…n]]--如果触发的语句是UPDATE,指出修改的是哪列SQL_statement--AS引导的SQL语句指出了触发器需要完成的工作触发器DDL触发器的创建基本格式:CREAT

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。