数据库中的触发器

原创 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.当需要对某张表进行跟踪时。比如,当有新订单产生时,需要及时通知相关人员进行处理,此时可以在订单表上设计添加触发器加以实现。

【触发器】数据库_触发器实例

数据库触发器案例 一、课堂演示案例 例一:创建一个简单的insert触发器 先创建一个数据库备用 create database sampledb go   use sampledb ...
  • moshenglv
  • moshenglv
  • 2016年07月31日 15:31
  • 2230

SQL数据库(5)——数据库完整性----触发器

触发器是一种特殊的存储过程,当用户对表中的数据进行update、insert或delete操作时自动触发执行,通常用于保障业务规则和数据完整性 触发器的常用功能 完成比约束更复杂的数据约束 检查所做的...
  • longxinghaofeng
  • longxinghaofeng
  • 2017年01月01日 13:24
  • 768

oracle数据库触发器(trigger)用法总结

http://yedward.net/?id=116   触发器的意思就是当我们对数据库对象(一般是表或视图)进行insert、update、delete操作的时候,这些操作会相应的触发一些事件的...
  • zhanzhib
  • zhanzhib
  • 2015年09月25日 10:12
  • 10155

数据库的一些基础研究和性能探讨(触发器)

一直没有机会使用到触发器,但是在一个偶然的情况下,我在做用户同步和权限删除时我想起了这个功能。 在设计数据库的时候,我往往都走进一个怪圈,可能就是应了一个数据库的前辈所说的:开发数据库的思维...
  • bullswu
  • bullswu
  • 2014年01月16日 23:37
  • 2189

数据库学习笔记和小练习(10)触发器

触发器是用户定义在关系表上的一类由事件驱动的特殊过程,触发器在被定以后,保存在数据库服务器,任何用户对表的操作,服务器都会自动激活该触发器。 触发器又叫做:事件-条件-动作规则 即事件发生->检查条件...
  • pusude
  • pusude
  • 2016年11月07日 10:39
  • 451

Sqlserver数据库 通过表触发器 实时通知应用程序

/* Sqlserver数据库开始相关服务 以下示例显示了如何查看 OLE Automation Procedures 的当前设置。0未启用 */ EXEC sp_configure 'Ole Aut...
  • smartsmile2012
  • smartsmile2012
  • 2016年12月17日 10:04
  • 1513

数据库-触发器(定义、作用、使用方法、new/old虚拟表)

(1)触发器定义:     触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。 (2)触发器的作用:    1.安全性。...
  • zdplife
  • zdplife
  • 2015年09月01日 11:17
  • 2321

MySQL创建触发器实现统一主机下两个数据库的表同步

首先建立要用于测试 数据库 与 表 create database a; create database b; use a create table table1(id int, val int);...
  • u014796999
  • u014796999
  • 2016年07月05日 13:44
  • 2781

存储过程和触发器的取舍问题(优缺点分析)

由于要给同学分享一些关于数据库中存储过程和触发器的知识,我想了想,这是很细节的技术,一般只要用了都会很快掌握其使用方法。经过这么多年,我一般在设计数据库的时候也都会或多或少的使用存储过程和触发器,原因...
  • Jesse621
  • Jesse621
  • 2013年07月24日 16:50
  • 11031

数据库中触发器的使用

数据库触发器的简单实用
  • qq_26154077
  • qq_26154077
  • 2016年03月03日 11:51
  • 662
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库中的触发器
举报原因:
原因补充:

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