第十章_2触发器.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章_2触发器

触发器概述 触发器是当特定事件出现时自动执行的存储过程 特定事件可以是执行更新的DML语句和DDL语句 触发器不能被显式调用 触发器的功能: 自动生成数据 (student、sc级联更新) 提供审计和日志记录(记录、禁用DDL操作、用户登录情况) 启用复杂的业务逻辑 自定义复杂的安全权限 触发器类型 触发器的类型有: 创建触发器的语法 CREATE TRIGGER 触发器名 AFTER | BEFORE | INSTEAD OF [INSERT] [[OR] UPDATE] [[OR] DELETE] ON 表/视图名 [FOR EACH ROW] [WHEN (condition)] pl/sql_block; 触发器的组成部分 触发器由三部分组成: 触发器语句(事件) 触发器限制 触发器操作(主体) 触发器限制 即使导致触发器激活的事件发生了,但是也不意味着Oracle就会执行它。激活事件发生之后,触发器首先判断在触发器上是否存在限制,然后才会在执行触发器之间评估所有的限制。 某个限制条件可能如下: When (r_std.sno’07001’) 触发操作 触发操作是触发器的主体。当发生如下两件事情时Oracle才会执行代码块: 使用了合适的语句; 如果提供了触发器限制,则评估为真。 触发器的组成部分举例 语句触发器 语句触发器是在表上或某些视图上执行的特定语句的触发器。 语句触发器能够与insert、update或delete语句或这些语句的任意组合关联。 关心的是执行了什么语句,而不是语句影响的行。 创建语句触发器 用户可能希望在表上创建进行安全检查的insert、update或delete语句触发器,以便根据用户的具体业务规则验证正在进行操作的用户是否具有指定的权限。 语句触发器的类型判别 如果创建了一个多种类型的触发器,可引用inserting、updating或deleting条件谓词来判别是哪个语句导致了触发器的激活。如果值为真,那么就是相应的语句类型初始化了触发器。 BEFORE和AFTER BEFORE和AFTER BEFORE和AFTER 通过前面的示例可以看到,语句触发器能够在语句执行前(before)被激活,这使得它非常适合于强化安全、启用业务规则、进行日志操作等。 在after语句触发器中,Oracle会在语句完成之后执行它们。 行触发器 行触发器要在触发器定义的语句中包含 for each row子句,表明该触发器对表中各行都起作用。 行触发器激活后自动生成两个临时表:old、new 引用方法 :new.xxx :old.xxx 行触发器 Oracle触发器中是不容许使用事务处理命令的,如commit、rollback。 我们可以通过以下方法实现类似rollback的功能。 Raise_application_error(Error_id,Mes_text) Error_id : -20999 ~ -20000 Mes_text :提示信息 instead of触发器 instead of触发器是Oracle系统用来替换所使用的实际语句而执行的触发器。 instead of触发器只能建立在视图上。 instead of触发器可用于更新建立在多表查询上的视图。 启用、禁用和删除触发器 启用和禁用触发器 删除触发器 查看有关触发器的信息 USER_TRIGGERS 数据字典视图包含有关触发器的信息 触发器类型 DML触发器 行级触发器 语句级触发器 替代触发器 DDL触发器 在执行 DDL 语句时执行 数据库级 触发器 在发生打开、关闭、登录和退出数据库等系统事件时执行 触发语句就是那些导致Oracle执行触发器的事件。触发器事件可以是下面的内容: 表和一些视图上的数据操纵语言语句,例如insert、update、delete; 模式对象上的数据定义语言语句,例如create、alter、drop; 数据库的启动和关闭; 系统错误; 各种系统活动。 触发器语句 SQL CREATE OR REPLACE TRIGGER trig_std AFTER UPDATE OF sage ON student … 触发器语句 为 student 表创建 trig_std 触发器,在更新 sage列之后激活触发器 触发器限制 SQL … FOR EACH ROW WHEN (:NEW.sage:OLD.sage) DECLARE sage_diff NUMBER; … 只有在WHEN子句中的条件得到满足时,才激活trig_sal 触发器 SQL … BEGIN sage_diff:=:NEW.sage-:O

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档