
在 DB2 UDB 中使用 SQL 过程语言来操作触发器
热 荐
【字体:小 大】
在 DB2 UDB 中使用 SQL 过程语言来操作触发器
作者:- 文章来源:- 点击数:954 更新时间:2006-4-22 
Paul Yip
IBM 多伦多实验室
2003 年 10 月 作者 Paul Yip 回顾了在 IBM DB2 UDB V7.2 中触发器功能的增强。本文将简要介绍为何使用触发器,以及用几个例子来阐述如何充分利用这些新特性。
本文的例子在 DB2 Personal Edition, Workgroup Edition 和 Enterprise Edition 上开发和测试。如果您对此有任何疑问,请 与作者联系。
随着 DB2 UDB V7.2(或 DB2 V7.1 with Fixpak 3)的发布,触发器的功能在很大程度上增强了。本文将简要介绍为何使用触发器,并用几个例子来阐述如何充分利用这些新特性。
首先,触发器是与表相关联的对象,它定义了一些在 INSERT、UPDATE 或者是 DELETE 时自动发生的操作。下面是一些可能需要用到触发器的例子:
当插入时,在允许插入操作发生之前验证或者操纵数据。 当更新时,通过比较新值与原值来验证操作的正确性。如果您用表中的一列来存储状态信息并且希望定义有效的状态转换时,这样做特别有用。 执行删除操作之后,自动地将日志信息插入另一个用于审计追踪的表中。
触发器能在数据库层面上可用于集中业务规则的实施,使所有的应用程序和用户不必再去检查数据的有效性。同样地,如果业务规则发生改变,这些改变在数据库层上就被集中了,而不需要通过所有正在执行的应用程序来传播。
例子
为了说明上述功能,下面的例子为一个虚构的饰品公司的数据库创建表和触发器,该数据库保存了公司的订单和客户信息。要求实施以下业务规则:
当该饰品公司接到订单时,订单的价格和客户未结帐的物料清单价格的总和不能超过提供给该客户的赊购最高限额。 一份订单可以有几种状态:PENDING、CANCELLED、SHIPPED、DELIVERED 和 COMPLETED。只有以下状态转换才是合法的:
PENDING -> SHIPPED -> DELIVERED -> COMPLETED
PENDING -> CANCELLED
