`
daniel_tu
  • 浏览: 185320 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ORACLE的TRIGGER的用法 

阅读更多
ORACLE的TRIGGER的用法 
    看过这个篇文章之后,对自己的提高很大,我写过很多存储过程,很多函数,很多程序包,唯独没有写过TRIGGER,其实自己对TRIGGER的理解还不是很深,一直想试试,可惜没有机会.看过此文章后,觉得自己应该有能力写一个非常标准的TRIGGER了.

    附原文:

    原文引自 日月明王

                           TRIGGER之我见

                                                   日月明王

                               http://spaces.msn.com/sunmoonking/

  1. trigger 是自动提交的,不用COMMIT,ROLLBACK

  2. trigger最大为32K,如果有复杂的应用可以通过在TRIGGER里调用PROCEDURE或FUNCTION来实现。

  3. 语法CREATE OR REPLACE TRIGGER <trigger_name>
<BEFORE | AFTER> <ACTION>
ON <table_name>

DECLARE
 <variable definitions>
BEGIN
  <trigger_code>
EXCEPTION
  <exception clauses>
END <trigger_name>;
/

  4. 相关命令
    create trigger
    create any trigger
    administer database trigger
    alter any trigger
    drop any trigger

  5. 对列做触发(of)(行的触发是最常见的,不在这里列出


             1  create or replace trigger tri_wwm
             2  before update of id on wwm2 for each row
             3  declare the_str VARCHAR2(40):='update on wwm2''s id column';
             4  begin
             5      dbms_output.put_line(the_str);
             6* end tri_wwm;
           SQL> /

           Trigger created.

           SQL> update wwm2 set id=3;
           update on wwm2's id column

           1 row updated.

      6. Referencing 别名

          测试数据

           SQL> select * from wwm2;

                   ID NAME
           ---------- ----------
                    1 wwm
                    2 china

          建测试用日志表

             1  create table wwm_log
             2  (o_id number(8),o_name varchar2(10),
             3  n_id number(8),n_name varchar2(10),
             4* op_by varchar2(20),op_date date)
           SQL> /

           Table created.

           建立 触发器

             create or replace trigger tri_refer
            after update of id on wwm2 referencing new as new old as old for each row
            begin
                insert into wwm_log values (:old.id,:old.name,:new.id,:new.name,sysdate,user);
            end;
            /

            更新表以触发事件

           SQL> update wwm2 set id=8 where id=2;
           update on wwm2's id column

           1 row updated.

           SQL> select * from wwm_log;

                 O_ID O_NAME           N_ID N_NAME     OP_DATE   OP_USER
           ---------- ---------- ---------- ---------- --------- -----------------
                    2 china               8 china      09-MAR-06 SYSTEM

                 大家可以用这个方法来对一些操作做日志

      7.Disable/Enable

         ALTER  TRIGGER  tri_refer DISABLE/ENABLE

         ALTER  TABLE wwm2 DISABLE/ENABLE ALL TRIGGERS;

         ALTER TRIGGER tri_refer RENAME TO tri_reference;

 

      TRIGGER的种类还有很多,如DDL和SYSTEM的触发器,下次用到时再写吧。

分享到:
评论

相关推荐

    Oracle_Trigger_及_Oracle_常见问题解决方法

    Oracle Trigger是数据库中的一个关键特性,它允许在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行一段PL/SQL代码。触发器通常用于实现业务规则、数据验证、审计跟踪以及保持数据的一致性。 在实例1中...

    Oracle中通过触发器来追踪用户的活动

    在Oracle数据库中,跟踪用户活动是一项重要的管理任务,有助于监控系统的使用情况、保障安全和优化性能。Oracle从Oracle8i开始引入了一类特殊触发器,它们不再局限于传统的DML事件,而是扩展到了系统级别,包括...

    Oracle触发器备份表数据

    综上所述,使用Oracle触发器备份表数据是一种高效且灵活的方法,但同时也需要注意其潜在的局限性和挑战。通过合理设计和优化触发器,可以有效提升数据备份的效率和安全性,为数据库管理提供有力的支持。

    oracle触发器调用存储过程

    这个问题可以通过使用Oracle自治事务来解决。 Oracle自治事务将一个主事务分割成几个子事务,在执行完子事务以后再继续主事务。这里的关键是,子事务是独立于主事务的,子事务中的Rollback和Commit操作只会影响子...

    oracle触发器实现二维码

    "loadjava"标签可能指的是使用Oracle的LOADJAVA工具来加载Java源代码或类文件到数据库,以便在数据库中直接运行Java代码。这使得我们能够在数据库环境中利用Java的丰富库,比如生成二维码的库。 总结起来,这个项目...

    利用 Oracle 系统触发器防止误删除表操作

    Oracle作为一款广泛使用的数据库管理系统,提供了丰富的功能来保障数据安全。其中,系统触发器是Oracle提供的一种强大工具,能够帮助管理员监控并干预特定的数据库操作,有效防止误操作导致的数据丢失。 #### 问题...

    oracle 触发器实时调用java 中http接口

    在Oracle中,触发器由CREATE TRIGGER语句定义,它可以监听表上的特定操作。例如,一个INSERT触发器会在新的行被插入到表中时执行。触发器的代码可以访问新插入的行,并根据需要执行额外的操作,如日志记录、业务逻辑...

    个人亲测oracle触发器调用java程序

    在本文中,我们将介绍如何使用Oracle触发器调用Java程序。 一、加载Java程序 首先,我们需要将Java程序加载到Oracle数据库中。我们可以使用LOADJAVA命令来实现这一步骤。LOADJAVA命令位于$ORACLE_HOME/bin目录下,...

    ORACLE自增主键设置方法

    ### ORACLE自增主键设置方法 在Oracle数据库中,自增主键是一种常见的主键设计方式,它能够确保每条记录的唯一性,并且在插入新记录时自动递增,简化了数据管理流程。本文将详细介绍如何在Oracle中设置自增主键。 ...

    oracle dblink 创建过程

    ### Oracle DBLink创建过程及快照同步方法 #### 一、Oracle DBLink概念与创建步骤 DBLink(Database Link)是Oracle提供的一种机制,用于在不同的Oracle数据库实例之间建立连接,实现跨数据库查询、更新等功能。它...

    Oracle建立自增主键

    ### Oracle建立自增主键 在Oracle数据库管理中,创建自增主键是一种常见...总之,通过组合使用`SEQUENCE`和`TRIGGER`,可以有效地在Oracle数据库中实现自增主键功能,从而简化数据库管理并提高数据的一致性与完整性。

    oracle创建表示例

    根据提供的文件信息,本文将详细解释Oracle数据库中的表创建、序列及触发器的使用方法,特别关注于如何实现主键自增长功能。 ### Oracle 创建表示例 #### 1. 创建学生表 (Student Table) 首先来看如何创建一个...

    oracle增加表空间

    本文详细介绍了在Linux环境下使用命令行方式增加Oracle数据库表空间和创建用户的方法。通过这些步骤,可以有效地管理和优化Oracle数据库,确保其高效稳定运行。对于实际操作过程中可能遇到的问题,建议参考Oracle...

    顶级讲师oracle全部课件,最全文档,涉及oracle所有操作,开发必备

    本资源提供了 Oracle 的全面教程,涵盖了 Oracle 的基本使用、函数、存储过程、触发器、复杂查询等高级操作。 基本使用 Oracle 的基本使用包括连接命令、文件操作命令、交互式命令、显示和设置环境变量等。 * ...

    oracle数据库主键自动生成

    下面将详细介绍 Oracle 数据库主键自动生成的实现方法和相关知识点。 序列(Sequence) 序列是一种数据库对象,它可以生成一系列唯一的数字值,常用来生成主键值。在 Oracle 数据库中,可以使用以下语句创建一个...

    oracle初学者必知的100个问题

    在Oracle中创建触发器使用CREATE TRIGGER语句,基本语法为CREATE TRIGGER trigger_name BEFORE/AFTER INSERT/UPDATE/DELETE ON table_name FOR EACH ROW; 17. 如何管理用户权限? 通过GRANT语句赋予用户权限,...

    Oracle数据库基础教程:入门其实很简单

    - 创建触发器:CREATE TRIGGER语句的使用方法。 - 触发器事件:INSERT、UPDATE、DELETE等触发事件的处理。 5. **序列**: - 序列的概念:了解序列的基本用途。 - 创建序列:CREATE SEQUENCE语句的使用方法。 -...

    Oracle DML触发器在数据库编程中的应用.pdf

    本文将对 Oracle DML 触发器的工作原理、类型、使用方法等进行详细的介绍,并提供了实践中的应用示例。 1. Oracle DML 触发器的工作原理 Oracle DML 触发器是一种特殊类型的存储过程,它可以自动执行 SQL 和 PL/...

    Oracle学习第八章

    4. 内置程序包的分类和功能概述,如DBMS_OUTPUT的使用方法和实例。 5. 如何在PL/SQL代码中调用内置程序包的成员,以及如何查看和理解其文档。 6. 实战练习,通过案例分析如何利用触发器和内置程序包解决实际问题。 ...

    oracle触发器

    - **启用触发器**:同样地,使用 `ALTER TRIGGER trigger_name ENABLE;` 可以重新激活已禁用的触发器。 - **禁用/启用表上的所有触发器**:`ALTER TABLE table_name DISABLE ALL TRIGGERS;` 和 `ALTER TABLE table_...

Global site tag (gtag.js) - Google Analytics