`

PL/SQL(oracle)9_触发器

阅读更多

一、触发器概念:(Trigger):
   是一种命名的PL/SQL块,是针对特定事件自动触发的。触发器不能接收参数。
   是基于表、视图、方案、数据库级别的。
二、为什么使用触发器。  
   通常可以实现一些审计的操作。
三、触发器类型:
    1、DML触发器:当在数据库上做DML操作时建立的触发器。  
    2、DDL触发器:当在数据库上做DDL操作时建立的触发器。  
    3、系统事件触发器:当实例系统、关闭、用户登陆、登出等操作时建立的触发器。
四、DML触发器:
  1、DML语句级触发器:当在一个表上做某个DML操作时,触发器体本身的语句被自动执行1次。
     创建语法:
     create Or Replace Trigger 触发器名 [before|After] [Insert|Update|Delete] On
     表名 PL/SQL块。
     说明:before|After,触发时间。before表示触发器体内的语句在DML操作之前执行,After表示之后执行。
     [Insert|Update|Delete] :触发事件
     PL/SQL块,如果有变量声明部分,需要以declare关键字开头。
     在触发器里不能包含事物结束的语句。
                          
  2、DML行级别触发器: 当在一个表上做某个DML操作时,触发器体本身的语句根据DML操作所影响的行数
     来决定执行多少次。
    
     create Or Replace Trigger 触发器名 [before|After] [Insert|Update|Delete] On
     表名 For Each Row
      PL/SQL块。

创建表:

Create table audit_emp_table(
     user_name         varchar2(10),
     timestamp           date,
     old_empno          number(10),
     new_empno        number(10),
     old_ename          varchar2(10),
     new_ename        varchar2(10),
     old_job                varchar2(10),
     new_job              varchar2(10),
     old_sal                number(7,2),
     new_sal              number(7,2)
);

 创建触发器:

 

CREATE OR REPLACE TRIGGER audit_emp_values
AFTER DELETE OR INSERT OR UPDATE ON emp
FOR EACH ROW
BEGIN
    INSERT INTO audit_emp_table (user_name, timestamp,
         old_empno,new_empno,old_ename, new_ename, 
         old_job,new_job, old_sal, new_sal)
    VALUES (USER, SYSDATE, :OLD.empno,:NEW.empno,
         :OLD.ename, :NEW.ename, :OLD.job,
         :NEW.job, :OLD.sal, :NEW.sal );
END;

试验:

Select * From audit_emp_table
Update emp Set sal = sal;
Commit;
 

触发器例子1:

create or replace trigger ZA_ZFBA_JCXX_RK_WFXYRXX        
       before insert or update on  ZA_ZFBA_JCXX_RK_WFXYRXX         
       for each row 
declare 
begin 
      if inserting then 
         :new.gxsj :=sysdate; 
         :new.tbsj :=sysdate; 
      elsif updating then 
         :new.gxsj :=sysdate; 
      end if;
end;

触发器例子2.

create or replace trigger update_sary
  after update on za_zfba_jcxx_rk_sary
  for each row
DECLARE
BEGIN
  IF(:new.GMSFHM is not null) THEN
    update ZA_ZFBA_JCXX_RK_SARY_H t 
        set t.GMSFHM = gmsfhm, t.XM = xm, t.RYXH = :new.RYXH 
            where t.RYXH = :old.RYXH and t.AJBH = :old.AJBH and RYLB = '0';
  END IF;
END update_sary;

 

 

分享到:
评论

相关推荐

    ORACLE PL/SQL 存储过程 触发器

    ORACLE PL/SQL 存储过程 触发器 ORACLE PL/SQL 存储过程 触发器 子程序 游标

    oracle pl/sql 存储过程和函数与触发器

    oracle pl/sql 存储过程和函数与触发器

    Oracle PL/SQL程序设计(第5版)(下册)第二部分

    《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...

    12oracle的PL/SQL编程-函数.包.触发器 PPT

    12oracle的PL/SQL编程-函数.包.触发器 PPT 12oracle的PL/SQL编程-函数.包.触发器 PPT

    PL/SQL Developer V7.1.4

    PL/SQL Developer是一种集成的开发环境,专门用于开发、测试、调试和优化Oracle PL/SQL存储程序单元,比如触发器等。PL/SQL Developer功能十分全面,大大缩短了程序员的开发周期。强大的PL/SQL编辑器,完善的Debugger...

    精通Oracle_PL/SQL

    全书涵盖了 PL/SQL提供的大量功能,包括高效数据处理、安全、触发器、DBA包以及高效的调试技术等。此外,书中含有丰富的示例,并提供了大量提示和技巧。《精通Oracle PL/SQL》结构清晰,示例丰富,实践性强,适用于 ...

    PL/SQL 程序设计

    PL/SQL 程序设计 本章主要重点:  PL/SQL概述  PL/SQL块结构  PL/SQL流程  运算符和表达式  游标  异常处理  数据库存储过程和函数  包  触发器

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二)

     本书是专门为oracle应用开发人员提供的sql和pl/sql编程指南。通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法...

    PL/SQL Developer 9.0.4.1644 绿色中文版_带注册机

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...

    PL/SQL Developer 6.05注册版-1

    PL/SQL Developer(pl/sql)是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。 <br>此版本包含注册文件和简体中文语言安装包 <br>Enhancements in PL/SQL Developer 7.1.5 ====================...

    Oracle9i PL_SQL程序设计(英文含中文包)

    PL/SQL Developer是一种集成的开发环境,专门用于开发、测试、调试和优化Oracle PL/SQL存储程序单元,比如触发器等。PL/SQL Developer功能十分全面,大大缩短了程序员的开发周期。强大的PL/SQL编辑器,完善的Debugger...

    PL/SQL课件

    PL/SQL简介(第1~2章) PL/SQL中的SQL语句(第3章) 控制结构(第4~7章) 异常处理(第8~10章) 游标(第11~12章) 触发器(第13~14章) 复合数据类型(第15~16章) 动态SQL(第17章) 批量SQL(第18章) 子程序和包...

    PL/SQL Developer v8.0.zip

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...

    pl/sql编写的模拟院校招生系统源码

    pl/sql编写的院校招生系统(通过包、存储过程、触发器、视图等完成的),可供学习oracle数据库pl/sql编程使用

    Oracle PL/SQL程序设计(第5版)(下册) 第一部分

    《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...

    Oracle 11g SQL和PL SQL从入门到精通〖送源代码〗

    本书是专门为Oracle应用开发人员提供的SQL和PL/SQL编程指南。通过学习本书,读者不仅可以掌握Oracle常用工具Oracle Universal Installer、Net Comfiguration Assistant、SQL Developer、SQL*Plus的作用及使用方法,...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一)

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一) http://download.csdn.net/source/3268267 Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二) ...

    Oracle8i PL/SQL高级程序设计 高清晰版

    共分为7部分(7个pdf文档...第一部分:PL/SQL介绍及开发环境 1.PL/SQL介绍 2.PL/SQL开发和运行环境 3.跟踪和调试 第二部分:非对象功能 4.创建子程序和包 5.使用子程序和包 6.数据库触发器 7.数据库作业和文件输入输出

    PL/SQL Developer8.04官网程序_keygen_汉化

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...

Global site tag (gtag.js) - Google Analytics