SQL-07存储过程与触发器.ppt
《SQL-07存储过程与触发器.ppt》由会员分享,可在线阅读,更多相关《SQL-07存储过程与触发器.ppt(20页珍藏版)》请在三一办公上搜索。
1、第7章 存储过程与触发器,本章内容:存储过程触发器 触发器类型 创建触发器 inserted和deleted临时表,7.2 触发器,触发器是一种特殊类型的存储过程,当在指定的表中使用INSERT、DELETE或UPDATE语句修改表中的数据时,SQL Server自动执行触发器,以响应INSERT、UPDATE或DELETE语句。触发器与数据修改事件相关联,可分为三类:INSERT触发器:当向表中插入数据行时自动触发 DELETE触发器:当从表中删除数据行时自动触发 UPDATE触发器:当修改表中数据时自动触发触发器常用来实现复杂的数据完整性。,7.2 触发器,例:XS和XS_KC之间的引用完
2、整性、学分和总学分之间的关系。,XS,XS_KC,7.2.1 触发器的创建,企业管理器创建触发器1、选择表,右击鼠标,选择“所有任务”,单击“管理触发器”。2、在“触发器属性”对话框中创建触发器。,1、T-SQL创建触发器,T-SQL语句创建触发器CREATE TRIGGER trigger_name ON table|view FOR|AFTER|INSTEAD OF INSERT,DELETE,UPDATE AS sql_statement.n 说明:trigger_name:是触发器的名称。在数据库中必须唯一。Table|view:是在其上执行触发器的表(称为触发器表)或视图。AFTER
3、:指定触发器只有在触发SQL语句中指定的所有操作都已成功执行后才激发。不能在视图上定义 AFTER 触发器。,1、T-SQL创建触发器,INSTEAD OF:指定执行触发器而不是执行触发SQL语句,从而替代触发语句的操作。DELETE,INSERT,UPDATE:指定触发器的类型,即指定在表或视图上执行哪些数据修改语句时将激活触发器。sql_statement:定义触发器被触发后,将执行的操作。例1:插入触发器CREATE TRIGGER insert_triggerON xs_kc for INSERTAS SELECT insert into xs_kc表GO,1、T-SQL创建触发器,执
4、行:insert xs_kc values(001101,106,80,3)可看出:SELECT insert into xs_kc表 已经执行例2:插入触发器和更新触发器CREATE TRIGGER update_triggerON xs_kcfor INSERT,UPDATEAS SELECT update on xs_kcGOinsert into xs_kc values(010102,206,80,3)update xs_kc set 成绩=90 where 学号=010101,2、触发器中的两个特殊表,执行触发器时,系统自动创建两个特殊的临时表:inserted表:表结构同触发器表
5、,用于存储INSERT和UPDATE 语句所影响的行的副本。deleted表:表结构同触发器表,用于存储DELETE和UPDATE语句所影响的行的副本。临时表中的数据由系统自动维护:执行INSERT时,新建行被同时添加到inserted表和触发器表中。执行DELETE时,行从触发器表中删除,并传输到deleted表中。执行UPDATE时,从触发器表中删除旧行,并传输到deleted表中,新建行被添加到inserted表。只能在触发器中访问临时表中的数据,且不能修改其内容。,3、应用举例,例7.12 创建一触发器,当向xs_kc表中插入一行数据时,检查插入数据中的学号是否在xs表中存在,课程号是
6、否在kc表中存在:CREATE TRIGGER check_trig ON xs_kc FOR INSERTASIF EXISTS(SELECT*FROM inserted a WHERE a.学号 NOT IN(SELECT b.学号 FROM xs b)or a.课程号 NOT IN(SELECT c.课程号 FROM kc c)BEGINRAISERROR(违背数据的一致性,16,1)ROLLBACK TRANSACTION END 执行:insert xs_kc values(110100,106,80,2)修改上触发器,完成 xs.总学分=xs.总学分+xs_kc.学分,3、应用举例
7、,例:库存表存放当前仓库中现有产品的情况,出库表存放已经出库的产品的情况,现需出15台电视机。,步骤:1、INSERT 出库表 VALUES(02,2006.3.10,15)2、UPDATE 库存表 SET 库存数量=库存数量 15 WHERE 产品号=02,出库表,库存表,3、应用举例,CREATE TRIGGER TR_出库表 ON 出库表 AFTER INSERTAS DECLARE ID char(6),num int DECLARE tmp int SELECT ID=产品号,num=出库数量 FROM inserted SELECT tmp=库存数量 FROM 库存表 WHERE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 07 存储 过程 触发器
链接地址:https://www.31ppt.com/p-6520614.html