Oracle第十讲:触发器.pptVIP

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

武汉卡信维信息技术有限公司——天佑内训 武汉卡信维信息技术有限公司——天佑内训 武汉卡信维信息技术有限公司——天佑内训 Oracle 9i 刘杰 第十讲:触发器 什么是触发器 触发器是当特定事件出现时自动执行的代码块。触发器与子程序的区别在于:过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的。Oracle会在事件请求触发器时,执行适当的触发器。 为什么使用触发器:维护数据的完整性,尤其是庞大的数据 创建触发器 Create or replace trigger 触发器名 before | after | instead of --指定是在完成操作前还是操作后触发触发器 Insert [or delete] [or update] of 列名 on 表名|视图名 [ REFERENCING [ NEW AS new_row_name ] [ OLD AS old_row_name ] ] –给new或者old关键字定义一个别名,在触发器操作中用别名代替new或者old使用 [for each row] --指定每行触发一次,默认情况下,数据库触发器每个表触发一次 [When (条件)] declare Begin exception End; 当触发器被同名触发器替换时,上一个触发器进行的DML操作自动被提交。 触发器的类型 行级触发器 行级触发器对DML语句影响的每个行执行一次。例如, UPDATE语句影响多行,就会对每行都激活一次行触发器。行级触发器是触发器中最常用的一种。可以在CREATE TRIGGER命令中指定FOR EACH ROW子句创建行级触发器。 由于触发器是事件驱动的,因此可以设置触发器在这些事件之前或者之后执行,即在执行DML语句之前或之后执行。在触发器中,可以引用DML语句中涉及的旧值或新值。“旧”是指在DML语句之前存在的数据。UPDATE和DELETE通常引用旧值。“新”是指由DML语句创建的数据值(如插入记录中的列)。 如果需要通过触发器在插入行中设置一个列值,就应该使用BEFORE INSERT触发器访问“新”值。使用AFTER INSERT触发器不允许设置插入值,因为该行已经插入表中。 在审计应用程序中经常使用AFTER行级触发器,直到行被修改才会触发它们。行的成功修改表明此行已经通过该表定义的完整性约束。 举例:在 SCOTT模式的EMP表上创建行级触发器。 create or replace trigger c_emp_deptno before insert or update of deptno on emp for each row when (new.deptno40) begin :m:=0; end; 触发器的组成 触发器语句 触发器语句是那些可以导致触发器的事件,即在表和视图上实行的INSERT、DELETE、UPDATE之类的DML语句,在模式对象上执行的DDL语句或数据库事件。 before insert or update of deptno on emp for each row 这就是说,触发器会在触发器操作事件之前隐式执行;当对EMP表执行INSERT语句或对EMP表的deptno列进行UPDATE 时。而且触发器将在受到影响的每一行上执行一次。但是触发器是否真正执行还要检查触发器限制条件,只有满足限制条件才会执行。 触发器的组成 触发器条件 触发器限制条件包含一个布尔表达式,该值必须为“真”才能激活触发器。如果该值为“假”或“未知”,将不运行出发操作。 when (new.deptno40) 这就是说,如果列deptno的新值不等于40,触发器就会执行。 触发器的组成 触发器操作 触发器操作是触发器的主体,包含一些SQL语句和代码,这些代码在执行触发器语句且触发器限制条件的值为“真”时运行。行级触发器允许出发操作中的语句访问行的列值。 begin :m:=0; end; 这段代码将列comm新值设为0。 举例:测试创建的触发器是否有效 insert into values (8000,Philip,MANAGER,null,31-12月-2002,6000,500,30); insert into values (8001,Tom,MANAGER,null,31-12月-2002,6000,500,40); commit; 上述语句在EMP表中插入了两条记录,并为每行记录指定了 COMM列的值。用

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档