数据库中的触发器

原创 2006年05月30日 14:10:00
在进行数据库应用软件的开发时,我们有时会碰到表中的某些数据改变,希望同时引起其他相关数据改变的需求,利用触发器就能满足这样的需求。它能在表中的某些特定数据变化时自动完成某些查询。运用触发器不仅可以简化程序,而且可以增加程序的灵活性。下面就对触发器的基本概念、它的应用场合进行一下简单的叙述。

什么是触发器

触发器是一种特殊类型的存储过程,它不由用户直接调用,被定义为在对表或视图发出 UPDATE、INSERT 或 DELETE 语句时自动执行。触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制复杂的业务规则或要求。

触发器还有助于强制引用完整性,以便在添加、更新或删除表中的行时保留表之间数据的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。

       触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能:
(1) 强化约束(Enforce restriction)
触发器能够实现比CHECK 语句更为复杂的约束。

(2) 跟踪变化Auditing changes
触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。

(3) 级联运行(Cascaded operation)。
触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。

(4) 存储过程的调用(Stored procedure invocation)。
为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS( 数据库管理系统)本身之外进行操作。
    由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(INSERT、 UPDATE、 DELETE)的多个触发器能够对同一种数据操作采取多种不同的处理。
    总体而言,触发器性能通常比较低。当运行触发器时,系统处理的大部分时间花费在参照其它表的这一处理上,因为这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。可见触发器所参照的其它表的位置决定了操作要花费的时间长短。

触发器可以扩展对表的约束、默认值和规则的完整性检查,但只要约束和默认值提供了全部所需的功能,就应使用约束和默认值。

应用场合

触发器的主要应用场合概括起来讲有以下几种:

1.当向一张表中添加或删除记录时,需要在相关表中进行同步操作。比如,当为应用系统添加一个系统用户时,需要同时向权限表中添加该用户的缺省权限,此时就编写系统用户表的触发器在添加记录动作时触发。

2.当表上某列数据的值与其他表中的数据有联系时。比如,当某客户进行欠款消费,可以在生成订单时通过设计触发器判断该客户的累计欠款是否超出了最大限度。

3.当需要对某张表进行跟踪时。比如,当有新订单产生时,需要及时通知相关人员进行处理,此时可以在订单表上设计添加触发器加以实现。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

数据库触发器学习

  • 2015-09-23 22:41
  • 176KB
  • 下载

数据库总结 建库 建表 触发器 存储过程 游标等等

《PL/SQL编程》                       &#...

数据库_触发器(超赞

  • 2015-03-13 16:30
  • 74KB
  • 下载

数据库创建触发器

  • 2014-05-25 08:09
  • 429B
  • 下载

Oracle数据库触发器如何调用Java程序实现Openfire消息推送

该教程需要实现Oracle调用Java程序向客户端消息,也可以学习触发器的使用,Oracle调用Java程序对用户授权命令。

数据库备份表、视图、存储过程、触发器、Event

备份脚本 #!/bin/bash #Author pandh MAXIMUM_BACKUP_FILES=10               #最大备份文件数 BACKUP_FOLDERNAME=/...

数据库实验6 触发器

  • 2011-12-29 08:42
  • 92KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)