资源描述:
《《触发器与存储过程》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章触发器与存储过程学习目标掌握触发器的类型;掌握触发器创建,修改和删除;掌握存储过程的创建和使用。学习重点触发器的创建;inserted表和deleted表的使用;存储过程的创建。7.1触发器概述触发器是一种特殊的存储过程。存储过程的执行是通过存储过程的名称被调用而执行的;触发器是通过定义的事件发生而被执行的。存储过程是用户主动调用的,触发器是被动执行的。7.1触发器概述当在指定表中使用UPDATE、INSERT或DELETE中一种或多种数据修改操作对数据进行修改时,触发器会生效。SQLServer2000将触发器和触发它的语句作为
2、一个事务对待,若条件不满足,可以回滚整个事务。触发器主要用于强制复杂的业务规则或要求。7.1触发器概述触发器的优点如下:1.触发器是被动的:它们在对表的数据作了任何修改之后立即被激活。2.触发器可以通过数据库中的相关表进行级联更改。3.触发器可以强制限制,这些限制比用CHECK约束所定义的更复杂。7.1触发器概述根据触发器的执行顺序,可将触发器分为:FOR/AFTER触发器和INSTEADOF触发器。FOR/AFTER触发器:都是在触发触发器的INSERT,UPDATE和DELETE语句执行完成之后执行的。INSTEADOF触发器:不执
3、行触发触发器的操作(INSERT,UPDATE和DELELTE语句),只完成触发的动作。即用触发器中定义的操作替代触发操作。7.1触发器概述根据触发触发器的操作,又可分为:INSERT触发器,UPDATE触发器和DELETE触发器。这三种触发器不是严格划分的,一个触发器可以是任意一种,或是两种甚至三种的组合。7.2创建触发器创建触发器的T-SQL语句为CREATETRIGGER,其语法为:CREATETRIGGERtrigger_nameON{tablename
4、viewname}[WITHENCRYPTION]{{FOR
5、AFTE
6、R
7、INSTEADOF}{[DELETE][,][INSERT][,][UPDATE]}AS[{IFUPDATE() [{AND
8、OR}UPDATE(column_name)][...n]sql_statement[...n] }7.2创建触发器例7.1当向Stu表添加记录完成时,返回一条信息“操作完成”。USEstudentsGOCREATETRIGGERtri_stuONStuFORINSERTASPRINT'操作完成'验证触发器是否能正常工作,向Stu表添加一条记录。INSERTStuVALUES('王二
9、','女','1990-10-3','13456261584','计算机软件','1001',NULL)7.2创建触发器定义触发器的注意事项:1.CREATETRIGGER必须是批处理中的第一条语句,并且只能应用到一个表中。2.触发器只能在当前的数据库中创建,不过触发器可以引用当前数据库的外部对象。3.触发器中不允许使用下列T-SQL语句:ALTERDATABASEDISKRESIZECREATEDATABASEDISKINITDROPDATABASELOADDATABASERECONFIGURELOADLOGRESTORELOGRES
10、TOREDATABASE7.3管理触发器修改触发器的T-SQL语句是:ALTERTRIGGER,其语法格式为:ALTERTRIGGERtrigger_nameON{tablename
11、viewname}[WITHENCRYPTION]{{FOR
12、AFTER
13、INSTEADOF}{[DELETE][,][INSERT][,][UPDATE]}AS[{IFUPDATE(column)[{AND
14、OR}UPDATE(column)][...n]}]sql_statement[...n]}7.3管理触发器例7.2修改例7.1中创建的触发器,将
15、其改为当对Stu表进行插入(INSERT),修改(UPDATE)和删除(DELETE)时,都显示完成信息。USEstudentsGOALTERTRIGGERtri_stuONStuFORINSERT,UPDATE,DELETEASPRINT'操作完成'7.3管理触发器若要使用T-SQL语句查看触发器的定义,可使用sp_helptext存储过程。其语法格式为:EXECsp_helptexttrigger_name若要了解在某个表上存储哪些触发器可以使用存储过程sp_helptrigger,语法格式为:[EXEC]sp_helptrigge
16、rtable_name启用和禁用触发器的语法格式为:ALTERTABLEtable_namedisable
17、enableTRIGGERtrigger_name7.3管理触发器例7.3再次修改例1中创建的触发