设为首页 加入收藏 网站搜索 繁體中文 中国建站网 — 站长资源平台

如何在DB2 Universal Database中暂时禁用触发器(1)

来源本站整理 作者:佚名 时间:2006-9-14 14:37:01 该文得分0

简介

有时您会想暂时禁用表上的触发器。例如,尽管您可能需要触发器执行日常的 SQL 操作,但可能不希望在运行特定脚本时触发那些触发器。标准做法是删除触发器,当再次需要它时再重新创建,但如果您必须跟踪许多触发器,那就有点为难了。(现在,我该把那些触发器的源代码保存到哪里呢?)

本文提供了三种解决这个问题的方法:

每种方法都有其优缺点,但我们将这方面的 讨论留到文章末尾。

方法 1:对特定用户禁用触发器

用来执行数据库维护任务的用户标识通常与用于应用程序的用户标识不同,这种方法利用了这一情况。要使这种方法有效,您只需选择在不希望触发触发器时要使用的用户标识。

example1.db2脚本中的 SQL 向您演示了这种方法。

xmlns:dw="http://www.ibm.com/developerworks/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">设置

要设置这个示例:

这个触发器很简单。每当连接的用户标识(由 USER 专用寄存器返回的)与 ADMINISTRATOR 不匹配时,则将插入到 t1 中的值也插入到 t2 。因此,当不想触发触发器时,以用户 xmlns:dw="http://www.ibm.com/developerworks/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">ADMINISTRATOR进行连接以执行您的任务。

xmlns:dw="http://www.ibm.com/developerworks/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">测试示例

方法 2:用框架来允许禁用触发器

本节描述了一个触发器框架,您可以将它用于任何可能需要暂时禁用的触发器。使用框架要求触发器开发人员进行规划并对这种概念取得一致意见,但这样做的结果可以得到该问题非常清晰的解决方案。

example2.db2脚本中的 SQL 向您演示了这种方法。

下面说明了这种机制的工作原理:

xmlns:dw="http://www.ibm.com/developerworks/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">设置

要设置这个示例:

xmlns:dw="http://www.ibm.com/developerworks/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">测试示例