`
maosheng
  • 浏览: 551571 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle 触发器详解 1

阅读更多
Oracle 触发器详解系列主要内容如下:
  
   8.1 触发器类型
   8.1.1 DML触发器
   8.1.2 替代触发器
   8.1.3 系统触发器
  8.2 创建触发器
   8.2.1 触发器触发次序
   8.2.2 创建DML触发器
  8.2.3 创建替代(INSTEAD OF)触发器
   8.2.4 创建系统事件触发器
   8.2.5 系统触发器事件属性
   8.2.6 使用触发器谓词
   8.2.7 重新编译触发器
  8.3 删除和使能触发器
  8.4 触发器和数据字典
  8.5 数据库触发器的应用举例
    8.6 数据库触发器的应用实例

  触发器是许多关系数据库系统都提供的一项技术。在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块。
  8.1 触发器类型
  触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。所以运行触发器就叫触发或点火(firing)。ORACLE事件指的是对数据库的表进行的INSERT、UPDATE及DELETE操作或对视图进行类似的操作。ORACLE将触发器的功能扩展到了触发ORACLE,如数据库的启动与关闭等。所以触发器常用来完成由数据库的完整性约束难以完成的复杂业务规则的约束,或用来监视对数据库的各种操作,实现审计的功能。
  8.1.1 DML触发器
  ORACLE可以在DML语句进行触发,可以在DML操作前或操作后进行触发,并且可以对每个行或语句操作上进行触发。
  8.1.2 替代触发器
  由于在ORACLE里,不能直接对由两个以上的表建立的视图进行操作。所以给出了替代触发器。它就是ORACLE 8专门为进行视图操作的一种处理方法。
  8.1.3 系统触发器
  ORACLE 8i 提供了第三种类型的触发器叫系统触发器。它可以在ORACLE数据库系统的事件中进行触发,如ORACLE系统的启动与关闭等。
  触发器组成:
  触发事件:引起触发器被触发的事件。 例如:DML语句(INSERT, UPDATE, DELETE语句对表或视图执行数据处理操作)、DDL语句(如CREATE、ALTER、DROP语句在数据库中创建、修改、删除模式对象)、数据库系统事件(如系统启动或退出、异常错误)、用户事件(如登录或退出数据库)。
  触发时间:即该TRIGGER 是在触发事件发生之前(BEFORE)还是之后(AFTER)触发,也就是触发事件和该TRIGGER 的操作顺序。
  触发操作:即该TRIGGER 被触发之后的目的和意图,正是触发器本身要做的事情。 例如:PL/SQL 块。
  触发对象:包括表、视图、模式、数据库。只有在这些对象上发生了符合触发条件的触发事件,才会执行触发操作。
  触发条件:由WHEN子句指定一个逻辑表达式。只有当该表达式的值为TRUE时,遇到触发事件才会自动执行触发器,使其执行触发操作。
  触发频率:说明触发器内定义的动作被执行的次数。即语句级(STATEMENT)触发器和行级(ROW)触发器。
  语句级(STATEMENT)触发器:是指当某触发事件发生时,该触发器只执行一次;
  行级(ROW)触发器:是指当某触发事件发生时,对受到该操作影响的每一行数据,触发器都单独执行一次。
  编写触发器时,需要注意以下几点:
  触发器不接受参数。
  一个表上最多可有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。并各触发器之间不能有矛盾。
  在一个表上的触发器越多,对在该表上的DML操作的性能影响就越大。
  触发器最大为32KB。若确实需要,可以先建立过程,然后在触发器中用CALL语句进行调用。
  在触发器的执行部分只能用DML语句(SELECT、INSERT、UPDATE、DELETE),不能使用DDL语句(CREATE、ALTER、DROP)。
  触发器中不能包含事务控制语句(COMMIT,ROLLBACK,SAVEPOINT)。因为触发器是触发语句的一部分,触发语句被提交、回退时,触发器也被提交、回退了。
  在触发器主体中调用的任何过程、函数,都不能使用事务控制语句。
  在触发器主体中不能申明任何Long和blob变量。新值new和旧值old也不能向表中的任何long和blob列。
  不同类型的触发器(如DML触发器、INSTEAD OF触发器、系统触发器)的语法格式和作用有较大区别。
分享到:
评论

相关推荐

    Oracle触发器详解

    本文是触发器的概念,语法,实例 进行剖析

    Oracle触发器语法详解

    触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。数据库触发器有以下的作用:

    oracle 触发器实时调用java 中http接口

    oracle insert数据成功之后调用触发器,触发器调用存储过程,存储实时调用java http

    oracle触发器详解

    oracle触发器详解,对初步学习数据库的人有很大的帮助

    ORACLE PL_SQL编程之八:把触发器说透.pdf

    ORACLE PL_SQL编程之八:把触发器说透,ORACLE PL_SQL编程之八:把触发器说透ORACLE PL_SQL编程之八:把触发器说透ORACLE PL_SQL编程之八:把触发器说透ORACLE PL_SQL编程之八:把触发器说透

    Oracle触发器用法实例详解

    主要介绍了Oracle触发器用法,结合实例形式详细分析了Oracle触发器的概念,功能,语法及相关使用技巧,需要的朋友可以参考下

    Oracle触发器trigger详解

    主要为大家详细介绍了Oracle触发器trigger,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Oracle中触发器示例详解

    在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块。 触发器类型 触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是...

    详解Oracle序列和触发器的使用

    详解Oracle序列和触发器的使用。。。。。。。。

    oracle数据库详解PPT

    oracle异常及触发器.ppt plsql过程及函数.ppt PLSQL介绍.ppt PLSQL控制结构.ppt PLSQL中使用SQL.ppt sql基本命令.ppt 锁和表分区.ppt 涉及到oracle数据库的方方面面,实在是不可多得的oracle黄金资料

    详解oracle中通过触发器记录每个语句影响总行数

    详解oracle中通过触发器记录每个语句影响总行数 需求产生:  业务系统中,有一步“抽数”流程,就是把一些数据从其它服务器同步到本库的目标表。这个过程有可能 多人同时抽数,互相影响。有测试人员反应,原来抽过...

    Oracle-PLSQL-编程语法详解-触发器.docx

    学习永无止境:触发器是许多关系数据库系统都提供的一项技术。在 ORACLE 系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的 PL/SQL 块。

    MySQL 触发器详解及简单实例

    MySQL 触发器简单实例 语法 CREATE TRIGGER <触发器名称> –触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象. { BEFORE | AFTER } –触发器有执行的时间设置:...

    Oracle常用对象大全及实例详解.pdf

    本文介绍了Oracle 中的表、索引、视图、同义词、函数、存储过程、触发器及包等。测试通过的基础上,采用语法结合实例的方式,对这些常用对象使用方法、命令、步骤及注意事项进行了说明和讲解,读者按照本文学习,...

Global site tag (gtag.js) - Google Analytics