`

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;

 

 

分享到:
评论

相关推荐

    PL/Sql_Demo_Oracle

    在Oracle数据库中,PL/SQL用于编写存储过程、函数、触发器、游标、异常处理等,这些都极大地增强了数据库的功能和性能。通过使用PL/SQL,开发者可以编写复杂的逻辑,提高数据处理的效率,并且能够更好地控制并发访问...

    pl_sql.zip_fetch_pl/sql_pl_sql_plsql_plsql java

    PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库提供的一个结合了SQL语句和过程式编程语言的编程环境。它主要用于管理和控制Oracle数据库,是Oracle数据库开发的核心工具之一。PL/SQL...

    oracle10g_pl/sql

    Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...

    Oracle PL/SQL实战(待续)

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...

    oracle_oracle_oraclepl/sql_

    1. **PL/SQL简介**:PL/SQL是Oracle数据库的内置编程语言,用于创建存储过程、函数、触发器和包。它的语法基于SQL,但增加了流程控制、异常处理和数据类型等特性。 2. **变量和数据类型**:PL/SQL支持多种数据类型...

    pl/sql最新中文手册

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种过程化语言,专为数据库操作设计。这个"PL/SQL最新中文手册"显然是一份详细解释PL/SQL 7.0版本的指南,对于学习和精通Oracle数据库编程至关重要。以下是手册...

    Oracle_PL-SQL.rar_ORACLE PL_oracle_oracle sql_oracle 教程_pl sql

    Oracle PL/SQL是Oracle数据库系统中的重要组成部分,它是一种结合了SQL查询语言和过程化编程元素的编程语言,专门用于在Oracle环境中进行数据库管理和应用程序开发。这个“Oracle PL-SQL.rar”压缩包提供了针对初学...

    pl sql web design.rar_oracle_pl sql_pl/sql_web sql

    在IT行业中,Oracle数据库系统是企业级数据管理的首选,而PL/SQL是Oracle数据库的内置编程语言,用于实现复杂的数据库操作和业务逻辑。本文将深入探讨如何利用PL/SQL结合Web技术来构建一个功能丰富的网上商店。我们...

    pl/sql例题代码pl/sql例题代码pl/sql例题代码

    PL/SQL是Oracle数据库中的一个核心组件,全称为Procedural Language/Structured Query Language,即过程化结构化查询语言。它是SQL的扩展,允许开发者在SQL的基础上添加过程化编程元素,如循环、条件判断和子程序等...

    Oracle PL/SQL实例精解 数据库建立代码

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据库操作能力和PL/SQL的结构化编程特性,使得数据库开发者能够创建复杂的应用程序和数据库逻辑。在"Oracle PL/SQL实例精解 数据库建立代码"中,我们将深入探讨...

    Oracle PL/SQL实例编程(PL/SQL经典书籍)

    Oracle PL/SQL是一种强大的编程语言,它将数据库管理和应用程序逻辑紧密结合起来,是Oracle数据库系统中的核心组件之一。这本书“Oracle PL/SQL实例编程”显然旨在深入讲解如何利用PL/SQL进行实际开发工作,通过实例...

    Oracle Database 12c PL/SQL开发指南 实例源代码

    9. **索引和性能优化**:了解如何创建和使用索引,以及通过PL/SQL分析和优化SQL查询性能。 10. **并发控制**:PL/SQL中的锁定机制,如ROW LEVEL LOCKING,以及如何处理死锁问题。 11. **错误处理和日志记录**:...

    OraclePL-SQL.rar_ORACLE PL_oracle_oracle sql

    Oracle PL/SQL是Oracle数据库系统中的重要组成部分,用于开发存储过程、函数、触发器等数据库对象,以及执行复杂的SQL操作。以下是对Oracle PL/SQL及其相关知识点的详细说明: 1. **Oracle数据库基础**:Oracle...

    pl/sql developer11.0

    PL/SQL Developer是一款由Allround Automations公司开发的专业Oracle数据库开发工具,专为编写、调试、测试和管理PL/SQL代码而设计。标题中的“pl/sql developer11.0”指的是该软件的第11个主要版本。在本文中,我们...

    Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发

    《Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发》是一本深入探讨Oracle数据库中的PL/SQL编程的专业书籍。PL/SQL是Oracle数据库特有的编程语言,它结合了SQL的查询能力与过程式编程语言的功能,使得数据库...

    pl/sql 8 Oracle客户端

    总的来说,PL/SQL 8 Oracle客户端是用于管理和操作Oracle数据库的强大工具,它的功能包括但不限于编写存储过程、触发器、事务控制、错误处理等。了解和掌握PL/SQL语言对于任何Oracle数据库管理员或开发者来说都至关...

    PL-SQL.rar_pl_pl/sql

    PL/SQL是Oracle数据库系统中的编程语言,它是SQL(结构化查询语言)的扩展,用于在Oracle环境中编写存储过程、函数、触发器等数据库对象。这个"PL-SQL.rar_pl_pl/sql"压缩包可能包含了一个适合初学者学习PL/SQL的...

    how-to-unwrap-pl-sql.zip_oracle pl/sql ppt

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种过程化语言,结合了SQL的查询能力与编程语言的控制结构。"如何展开PL/SQL"的主题通常涉及到理解、解析和调试PL/SQL代码,这对于Oracle数据库管理员和开发...

    pl/sql64位

    PL/SQL是Oracle数据库系统中的一个关键组件,全称为Procedural Language/Structured Query Language,是一种结合了SQL和过程编程语言的工具,主要用于编写数据库应用程序。64位的PL/SQL开发者工具对于那些处理大数据...

    pl/sql oracle常用工具

    Oracle数据库是全球广泛使用的数据库管理系统,而PL/SQL则是Oracle专有的编程语言,用于与数据库交互。在开发和管理Oracle数据库时,拥有合适的工具能够极大地提高效率和准确性。"pl/sql oracle常用工具"这个标题...

Global site tag (gtag.js) - Google Analytics