爱问知识人 爱问教育 医院库

数据库 触发器有什么用

首页

数据库 触发器有什么用

我发现一些个数据库都有这个概念,请问能否用通俗易懂的方式给解释下啊

提交回答
好评回答
  • 2012-03-26 13:49:39
    触发器本质上讲就是事件监控器,可以定义在数据库系统进行某一个操作的前后。当数据库系统在进行特定的操作时,发现有触发器定义,就去执行触发器定义的功能,从而满足某些特定的需要。例如,在更新某些数据后,再去更新特定的数据。这就可以定义一个触发器完成这样的需要。

    好***

    2012-03-26 13:49:39

其他答案

    2012-03-26 11:19:17
  •   1 触发器的创建及使用时机
    当针对某特定表的insert,update或delete语句执行时,用户所定义的过程被隐含执行,这个过程就叫做数据库触发器。触发器可以作为一个单元而执行的sql及pl/sql语句,并可调用存贮过程,但存贮过程与触发器在被执行的方式上完全不同。
      存贮过程是被用户应用触发器显式调用的,而触发器则是当insert,update或delete语句执行时,由数据库系统点火的(fired),不管与其相连的用户及应用程序。触发器被存贮于数据库中,并与相关联的表分离,由于一般应用预先定义了触发器,相应的数据库管理系统对其进行了伪编译及优化,因而在客户/服务器计算模式下,对减轻网络流量及加快执行速度方面,是一较好的方案。
       触发器仅可定义于表上,而不能定义于视图上,在大多数情况下,触发器用于如下几个方面: 1) 自动生成派生列值;2) 禁止非法事务;3) 增强复杂的安全识别;4) 在分布式数据库中增强参照完整性;5) 增强复杂的商业规则;6) 提供透明的事件日志;7) 提供高级审计;8) 维护同步表复制;9) 在表存取上聚合统计。
       开发人员一般是对上述9种情况作组合使用,可归为以下四种典型应用。 1) 对库中相关表进行连环更新,如:键值的同步更新,数据冗余实现,计算表的同步更新等; 2) 实现那些破坏完整性操作的拒绝,如:不匹配外键值的插入拒绝; 3) 实现库定义本身所不能实现的更为复杂的商业规则,如:更新操作的时间限制,更新数据的幅度限制等; 4) 实现简单的“如果……怎么办”的分析。
       在触发器的使用中,需注意避免级联点火的问题,另一方面,对触发器的过度使用会导致维护困难,还需注意触发器级定义完整性约束的区别。 2 触发器的组成 触发器,由触发事件或语句、触发器限制、触发体三部分组成,如下列所示: 能导致触发器点火的SQL语句叫做触发事件或语句,它可以是在一表上的INSERT,UPDATE或DELETE语句,也可以是多个DML语句,如:……INSERT OR DELETE OF INVENTORY……。
       当多个类型DML语句点火触发器时,条件前置可用来检测触发语句的类型,因而,单一的触发器内可据点火触发器主句类型来执行不同的处理。 触发器限制指明一布尔型(逻辑)表达式,仅当表达式值为真(TRUE)时,触发器才点火,否则触发体将不被执行。
       触发体是一个过程(PL/SQL块),它由一些SQL及PL/SQL语句代码组成,触发语句被执行,且触发器限制为真时,该段代码被执行。 与存贮过程类似,触发体内含SQL及PL/SQL语句,并可定义PL/SQL语言结构,可指明触发体、执行的次数。
       行触发器对所影响的每行执行一次。如-UPDATE语句涉及到某表的多行更新,则对更新的每一行,触发器点火一次;而语句触发器仅点火一次,不管其语句影响到表的多少行;如-DELETE语句删除了表中的多行,但语句触发器仅点火一次。 在定义触发器时,还可指明触发时间,即触发体在触发语句之前或之后执行:BEFORE、AFTER。
       在触发器的实际应用中,往往是组合触发时间及触发次数,由这些参数可形成如下表所示的四种类型的触发器。 类 型 含 义 触发时间 触发次数 BEFORE Statement 在执行触发语句前,执行触发体 AFTER Statement 在执行触发语句及申请任何滞后完全性约束之后,执行触发体 BEFORE ROW 在修改所影响的每一行及验证相应完整性约束之前,执行触发体 AFTER ROW 在修改所影响的每一行及可能申请相应完整性约束之后,执行触发体,设触发器实行行级封锁机制。
       对一给定表,可以有同一类型的多个触发器。更进一步,对每种类型的DML语句(INSERT,UPDATE或DELETE)亦可建立任意多的前缀类型不同的触发器,针对同一语句的相同类型的触发器,其点火次序是随机的(不能实现程序控制)。 3 触发器的执行 定义于数据库的触发器,可由程序控制其使能(ENABLE)或屏蔽(DISABLE)状态。
       单一的-SQL语句可以潜在地点火前述四种类型的触发器,另一方面,触发体内的一语句可能导致一个或多个完整性规则,也可能导致其它的触发器点火(级联触发器),关于多触发点火次序及约束检测,ORACLE采用以下的执行模型。 1) 执行所有的BEFORE语句级触发器;2) 对遍历所涉及的每一行:a。
      执行所有的BEFORE行级触发器;b。锁定并修改行,执行完整性约束检测;c。执行所有的AFTER行级触发器。3) 完成滞后完整性的约束检测;4) 执行所有的AFTER语句级触发器。 仅当整个执行模型成功之后,触发语句执行成功,否则在有例外代码指定的情况下,整个事务被退回。
      因而完整性约束定义不能与触发器定义相矛盾。 互联先锋提供1108种国外域名注册,提供香港、德国、英国、澳洲、美国等多国空间,提供香港、美国、台湾、韩国、日本、德国、英国、澳洲等多国服务租用。

    2***

    2012-03-26 11:19:17

类似问题

换一换
  • 数据库 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 176-195
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):