网站大量收购独家精品文档,联系QQ:2885784924

数据库实用技术教程教学课件作者基于Oracle系统电子教案第8章节课件幻灯片.ppt

数据库实用技术教程教学课件作者基于Oracle系统电子教案第8章节课件幻灯片.ppt

  1. 1、本文档共79页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 8.3.1 创建触发器 【例8.16】在course表上定义一个删除触发器,当删除course表中课程时,自动将sc表中该课程的选修信息删除。 (1)创建触发器 题目要求的实际上是创建级联删除触发器,即当删除主表course中一行记录时,自动删除从表sc 中相关记录。由于主、从表存在删除顺序,必须先删除从表数据才能删除主表数据,因此建在course表的删除触发器删除时机必须是“BEFORE”,即删除course表数据之前执行触发体语句删除从表sc表相关记录;由于删除course表的数据时,必须逐行得到要删除的course表的c_no,才能根据此c_no删除sc表的相关数据,因此必须为行级触发器,因为是删除的数据是旧数据,因此利用关键字“OLD”。 CREATE TRIGGER trigger_course_sc BEFORE DELETE ON course --删除之前 FOR EACH ROW --行级触发器 * 8.3.1 创建触发器 BEGIN DELETE FROM sc WHERE c_no=:old.c_no; --删除sc表中c_no为course表删除数据行的c_no DBMS_OUTPUT.PUT_LINE(课程表级联删除数据执行成功!); END; (2)删除课程编号为“0002”的课程信息 DELETE FROM course WHERE c_no=0002; 执行结果为: sc谓词删除触发器执行成功! sc表行级删除触发器执行成功! sc谓词删除触发器执行成功! sc表行级删除触发器执行成功! sc表语句级删除触发器执行成功! 课程表级联删除数据执行成功! 已删除 1 行。 * 8.3.1 创建触发器 从本例中可以看出,首先创建了基于course表的删除触发器,触发体中语句功能为删除sc表中该课程编号的选修信息。例子中利用OLD来指定course表中已删除的课程编号。该例的执行过程如下: (1)当删除course表中课程编号为“0002”的课程信息,首先触发course表中的行级删除触发器“trigger_course_sc”,执行该触发器的触发体,首先执行第1条语句“DELETE FROM sc WHERE c_no=:old.c_no;”。执行该语句时,触发了sc表中的删除触发器。 (2)由于在sc表中定义了多个删除触发器,从本例中可以看出,只要满足触发条件,触发器由数据库系统自动触发,sc表中满足条件的数据有两行,因此删除数据时,触发了行级触发器“trigger_sc_row”、“trigger_sc_mul”各两次,触发了语句级触发器“trigger_sc”一次。 (3)sc表删除触发器执行完成后,返回course表中的删除触发器“trigger_course_sc”,继续执行触发体中下一条语句“DBMS_OUTPUT.PUT_LINE(课程表级联删除数据执行成功! );”,输出“课程表级联删除数据执行成功!”。 (4)由于course表中满足删除条件的数据只有一行,所以只执行一次行级删除触发器“trigger_course_sc”。 (5)行级触发器“trigger_course_sc”执行成功后,sc表中相关数据被删除。 * 8.3.2 查看触发器 8.3.1 创建触发器 8.3.3 修改触发器 8.3 触发器 8.3.4 删除触发器 * 8.3.2 查看触发器 查看触发器的方法有企业管理控制台方式和命令行方式两种。 1. 企业管理控制台方式 在企业管理控制台中,选中要查看的触发器,双击鼠标左键或单击鼠标右键,在快捷菜单中选中“查看→编辑详细资料”即可出现查看触发器窗口。 * 2. 命令行方式 触发器信息存储在数据字典DBA_TRIGGERS中,使用查询命令DESC可以得到存储在DBA_TRIGGERS中的触发器信息,如表8-7所示。 名称 是否为空? 类型 OWNER ? VARCHAR2(30) TRIGGER_NAME ? VARCHAR2(30) TRIGGER_TYPE ? VARCHAR2(16) TRIGGERING_EVENT ? VARCHAR2(227) TABLE_OWNER ? VARCHAR2(30) BASE_OBJECT_TYPE ? VARCHAR2(16) TABLE_NAME ? VARCHAR2(30) COLUMN_NAME ? VARCHAR2(4000) REFERENCING_NAMES ? VARCHAR2(128) WHEN_CLAUSE ? VARCHAR2(4000) STATUS ? VARC

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档