db2使用版本9.7

创建A 、B两个表,A表数据有更新、删除、插入时,将A表ID记录放入B表

1、create table A (id varchar(5),name varchar(30));

create table B (id varchar(5),name varchar(30))

2、创建触发器

--插入时触动

CREATE TRIGGER administrator.tri_insert

AFTER INSERT ON administrator.A

REFERENCING NEW AS N

FOR EACH ROW MODE DB2SQL

BEGIN ATOMIC

INSERT INTO administrator.B(ID,NAME) VALUES(N.ID,N.NAME );

END

--测试: INSERT INTO  administrator.A VALUES ('3','Name');

--删除时触动

CREATE TRIGGER administrator.tri_delete

AFTER DELETE ON administrator.A

REFERENCING OLD AS O

FOR EACH ROW MODE DB2SQL

BEGIN ATOMIC

INSERT INTO administrator.B(ID) VALUES(O.ID);

END --测试:DELETE FROM administrator.A WHERE ID = '3'

--更新时触动

CREATE OR REPLACE  TRIGGER administrator.tri_update

AFTER UPDATE OF NAME ON administrator.A

REFERENCING NEW AS N OLD AS O

FOR EACH ROW MODE DB2SQL

BEGIN ATOMIC

INSERT INTO administrator.B(ID,NAME) VALUES(O.ID,N.NAME);

END

--测试:UPDATE administrator.A SET NAME = 'n2_name'

--有资料提示 DB2 9.7以上版本支持 AFTER INSERT OR DELETE OR UPDATE 写法,可是9.7版本并不支持

例子:

CREATE OR REPLACE TRIGGER HIRED
   AFTER INSERT OR DELETE OR UPDATE OF SALARY ON EMPLOYEE
   REFERENCING NEW AS N OLD AS O FOR EACH ROW
   BEGIN
      IF INSERTING THEN

  UPDATE COMPANY_STATS SET NBEMP = NBEMP + 1;

ELSEIF

  DELETING THEN UPDATE COMPANY_STATS SET NBEMP = NBEMP - 1;

ELSEIF (UPDATING AND (N.SALARY > 1.1 * O.SALARY))
         THEN SIGNAL SQLSTATE '75000' SET MESSAGE_TEXT='Salary increase>10%';
      END IF;
   END;

之后,考虑使用DB2中ORACLE兼容性的设置,db2set DB2_COMPATIBILITY_VECTOR=ORA , 依然不支持 AFTER INSERT OR DELETE OR UPDATE 写法,有成功在9.7版本中成功使用AFTER INSERT OR DELETE OR UPDATE 写法的麻烦指导下

DB2触发器简单例子的更多相关文章

  1. Hibernate4.2.4入门(一)——环境搭建和简单例子

    一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...

  2. sql server触发器的例子

    发布:thebaby   来源:脚本学堂     [大 中 小] 本文介绍下,在sql server数据库中使用触发器的简单例子,有需要的朋友可以参考下,希望对你有一定的帮助. 原文地址:http:/ ...

  3. (一)Quartz2.2.1 简单例子

    转载至http://blog.csdn.net/a4307515/article/details/46985533 1.关键接口 Scheduler,任务调度的API:它可以用来启动或者终止任务等. ...

  4. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  5. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  6. ko 简单例子

    Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板 ...

  7. mysql定时任务简单例子

    mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9     如果要每30秒执行以下语句:   [sql] update userinfo set endtime = now() WHE ...

  8. java socket编程开发简单例子 与 nio非阻塞通道

    基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...

  9. 一个简单例子:贫血模型or领域模型

    转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...

随机推荐

  1. WinForm Flicker闪屏解决方案

    开发WinForm 程序时经常会遇到闪屏的问题,这会给用户造成很差的使用体验,所以必须妥善解决好这个问题. 首先,我们先要找出闪屏的原因,就我目前遇到的问题而言,其原因真是五花八门. 主要的原因有:使 ...

  2. 使用FormData实现ajax文件异步上传

    1.传统的web开发文件上传一般是基于form表单的文件上传,同步的方式,用户体验差,可控性也差 2.异步上传的实现 有以下方式 2.1 借助浏览器插件 一般需要安装一些类似flash的插件  这种方 ...

  3. php读取文件夹文件,清理文件

    // 获取文件夹中图片的数量和名称 public function show_tmp_file() { $handler = opendir('./tmp/');//当前目录中的文件夹下的文件夹 $c ...

  4. Rest之路 - 搭建开发环境

    准备Jersey框架和类库 从官网 (https://jersey.java.net/download.html) 下载最新的zip文件,解压后如下图: lib: 包含Jersey的所有类库. ext ...

  5. MFC学习(二)

    WinApp封装了程序的主入口WinMain,WinMain就和C语言的main函数地位一样,是Win32程序的入口.在MFC的封装中,一个程序启动,Windows调用WinMain,这个WinMai ...

  6. 解决git gnutls_handshake失败

    sudo apt-get install build-essential fakeroot dpkg-dev mkdir ~/git-openssl cd ~/git-openssl sudo apt ...

  7. Python Twisted系列教程9:第二个小插曲,Deferred

    作者:dave@http://krondo.com/a-second-interlude-deferred/ 译者:杨晓伟(采用意译) 可以从这里从头来阅读这个系列 更多关于回调的知识 稍微停下来再思 ...

  8. 在VS13上编译通过的代码放在12上编译-错误:l __dtoui3 referenced in function _event_debug_map_HT_GROW

    在VS13上编译通过的代码放在12上编译 遇到错误:l __dtoui3 referenced in function _event_debug_map_HT_GROW 1>------ 已启动 ...

  9. jenkins容器权限被拒绝

    问题,我们从官网上面pull下jenkins后,如果直接运行容器的没问题 docker run -d -p 8080:8080 -v jenkins:latest 不过我们可能需要映射下容器内部的地址 ...

  10. java Integer类的缓存(转)

    首先看一段代码(使用JDK 5),如下: public class Hello { public static void main(String[] args) { int a = 1000, b = ...