复合触发器范例

create or replace trigger compound_trigger

for insert or update or delete on dept_x

compound trigger

before statement is

begin

dbms_output.put_line('1:before statement.');

end before statement;

before each row is

begin

dbms_output.put_line('2:before each row.');

end before each row;

after each row is

begin

dbms_output.put_line('3:after each row');

end after each row;

after statement is

begin

dbms_output.put_line('4:after statement.');

end after statement;

end;

/

select * from dept_x;

DEPTNO DNAME   LOC

---------- -------------- -------------

10 ACCOUNTING   NEW YORK

20 RESEARCH   DALLAS

30 SALES   CHICAGO

40 OPERATIONS   BOSTON

delete dept_x;

1:before statement.

2:before each row.

3:after each row

2:before each row.

3:after each row

2:before each row.

3:after each row

2:before each row.

3:after each row

4:after statement.

4 rows deleted.

复合触发器范例

create or replace trigger compound_trigger

for insert or update or delete on dept

compound trigger

before each row is

begin

if inserting then

if :new.dname is null then

:new.dname:='VDEDU';

END IF;

if :new.loc is null then

:new.loc:='china';

end if;

end if;

end before each row;

end;

/

drop trigger compound_trigger;删除触发器

创建一个日志表,记录dept表的DML操作

create table dept_log(logid number,type varchar2(50),logdate date,deptno number,dname varchar2(50),loc varchar2(50));

create sequence dept_log_seq;

create or replace trigger dept_update_trigger10

before insert or update or delete

on dept

for each row

begin

if inserting then

insert into dept_log(logid,type,logdate,deptno,dname,loc)

values(dept_log_seq.nextval,'insert',sysdate,:new.deptno,:new.dname,:new.loc);

elsif updating then

insert into dept_log(logid,type,logdate,deptno,dname,loc)

values(dept_log_seq.nextval,'update',sysdate,:new.deptno,:new.dname,:new.loc);

else

insert into dept_log(logid,type,logdate,deptno,dname,loc)

values(dept_log_seq.nextval,'delete',sysdate,:old.deptno,:old.dname,:old.loc);

end if;

end;

/

PLSQL复合触发器的更多相关文章

  1. 【PLSQL】触发器trigger类型,状态,參数

    ************************************************************************   ****原文:blog.csdn.net/clar ...

  2. Oracle:复合触发器

    ----- CF_DEPTUCORGANIZATION  INSERT UPDATE DELETE 触发器CREATE  OR REPLACE TRIGGER tr_del_CF_DEPTUCORGA ...

  3. plsql programming 19 触发器

    挂起语句, 是指数据库 Hang 到那不能动了, 触发的. 1. DML 触发器 这种类型的触发器对于开发人员都很常见, 其他类型的触发器主要是给DBA使用的. 配置触发器,我们需要回答以下问题: 触 ...

  4. pl/sql学习(5): 触发器trigger/事务和锁

    (一)触发器简单介绍 触发器是由数据库的特定时间来触发的, 特定事件主要包括以下几种类型: (1)DML: insert, update,delete 增删改 (2)DDL: create, alte ...

  5. plsql实例精讲部分笔记

    转换sql: create or replace view v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,mo ...

  6. PLSQL开发笔记和小结(转载)

    *****************************************   PLSQL基本结构 ***************************************** 基本数据 ...

  7. Oracle之PLSQL总结

    基本数据类型变量 1. 基本数据类型     Number 数字型     Int 整数型     Pls_integer 整数型,产生溢出时出现错误 Binary_integer 整数型,表示带符号 ...

  8. PLSQL开发笔记和小结

    *****************************************  PLSQL基本结构*****************************************基本数据类型变 ...

  9. PL/SQL 编程(三 )程序包和包体,触发器,视图,索引

    一.程序包和包体 程序包(package):存储在数据库中的一组子程序.变量定义.在包中的子程序可以被其它程序包或子程序调用.但如果声明的是局部子程序,则只能在定义该局部子程序的块中调用该局部子程序. ...

随机推荐

  1. python3.6 使用pyinstaller 打包web程序的方法

    官方文档连接 (https://pyinstaller.readthedocs.io/en/stable/ ) 第一步,下载pywin32 首先下载pywin32,下面是下载链接,下载自己的系统版本对 ...

  2. Android反编译和二次打包

    参考:APK反编译 一.工具介绍: 1.解压工具 2.JDK 3.apktool: aapt.exe,apktool.bat,apktool.jar;三个在同一目录结合使用,用来反编译apk,反编译生 ...

  3. 《Essential C++》读书笔记 之 泛型编程风格

    <Essential C++>读书笔记 之 泛型编程风格 2014-07-07 3.1 指针的算术运算(The Arithmetic of Pointer) 新需求1 新需求2 新需求3 ...

  4. shell-跳板机便捷增加用户及设置密码

    我的需求: 因网络限制,某些客户机ssh到服务器都得使用跳板机进行转一下,每次帮开帐户,不麻烦不难,但总觉得还可以再优. 不多说,直接放shell.很简单 #!/bin/bash #test add ...

  5. 教程:SpagoBI开源商业智能之XML Template 图表模板

    SpagoBI offers a variety of widgets' examples realized with the Highcharts library, that can be divi ...

  6. HAVANA 团队简介

    在Ensembl 下载的gtf 文件中,会有一部分来源自 HAVANA havana 的全称叫做 human  and vertebrate analysis and annotation, 是sag ...

  7. react获取当前页面的url参数

    react获取当前页面的url参数,必须在url路由对应的组件上获取,在子组件上获取不到,为undefined,获取形如  /news/:id  的后面的参数 id this.props.match. ...

  8. SpringMVC 文件上传配置,多文件上传,使用的MultipartFile

    一.配置文件:SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver:用于处理表单中的file <!-- 配置Multipa ...

  9. 5 -- Hibernate的基本用法 --5 1 持久化类的要求

    1.  提供一个无参数的构造器:所有的持久化类都应该提供一个无参数的构造器,这个构造器可以不采用public访问控制符.只要提供了无参数的构造器,Hibernate就可以使用Constructor.n ...

  10. 使用 PHP_CodeSniffer 检查 代码 是否 符合 编码规范

    服务端部署:PHP_CodeSniffer HG 服务端部署篇 1.下载PHP_CodeSniffer 前往 https://github.com/squizlabs/PHP_CodeSniffer ...