第十一讲 触发器.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文档。上传文档
查看更多
触发器 主讲:申友访 邮箱:10bigbull@163.com 触发器概述 数据库触发器存储在与某个指定的数据库表关联的PL/SQL程序单元中。只要SQL操作影响到表时,oracle就自动执行数据库触发器。所以,这些触发器被隐式地调用。 触发器的使用 触发器可用于: 自动生成最初的列值; 防止无效事务; 加强复杂的安全授权; 提供透明的时间日志; 搜集表访问的统计; 自动获取列值; 限制DML操作在某一事段内进行。 触发器的创建 语法如下: Create or replace trigger 触发器名 Before | after --指定是在完成操作前还是操作后触发触发器 Insert [or delete] [or update] of 列名 on 表名 [for each row] --指定每行触发一次,默认情况下,数据库触发器每个表触发一次 [When (条件)] declare ------ Begin -------- exception -------- End; 触发器举例 例:当把某一部门从dept表删除后,就删除emp表中的该部门的所有信息。 create or replace trigger pd3 after delete on dept for each row begin dbms_output.put_line(deleting......); delete from emp where deptno = :old.deptno; end; 说明:在程序中,可以使用前缀“:new”和“:old”, “:new”表示更改后的值,而“:old”表示更改或删除之前的值。 注意事项 所有者必须对所有触发器操作所引用的对象有适当的访问权限。 在BEGIN…END程序块中,不能使用commit和rollback事务控制语句。 触发器操作的选择 与insert,update和delete相对应的执行谓词如下所示: If inserting then insert into …. end if; If updating then update …. end if; If deleting then delete …. end if; INSTEAD OF 触发器 此触发器对那些由于基本表包括连接而不能直接通过“INSERT”、 “UPDATE”和“DELETE”语句修改 的试图提供了明晰的修改方法。 INSTEAD OF 触发器格式: CREATE TRIGGER 触发器名 INSTEAD OF INSERT|UPDATE|DELETE ON 视图名 BEGIN …… END; 创建触发器的限制 主体中 可以包括“DML SQL”语句,但“SELECT”语句必须为“SELECT INTO”语句或必须在游标声名中; 触发器的主体中不允许有DDL声名; 不允许有事务控制语句(COMMIT、ROLLBACK、SAVEPIONT); 如果所存储的子程序被触发器调用,则它不能包括事务控制语句; “LONG”和“LONG RAW” 类型的变量不能作为“:old”或“:new”值使用。 触发器的启用与禁用 可以启用也可以禁用触发器。默认情况下,所有触发器在首次创建时就是启用的。 ALTER TRIGGER 触发器名 DISABLE; ALTER TRIGGER 表名 DISABLE ALL TRIGGERS; ALTER TRIGGER 触发器名 ENABLE; ALTER TRIGGER 表名 ENABLE ALL TRIGGERS; 删除触发器 DROP TRIGGER 触发器名; RAISE_APPLICATION_ERRORS(error_number,message); --其中“error_number”的值一般取-20000到-20999范围内的负整数。 * * *

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档