`
daniel_tu
  • 浏览: 178749 次
  • 性别: 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中通过触发器来追踪用户的活动

    从Oracle8i开始,Oracle引入了特殊...当Oracle提供了这些新的触发器的功能后,却还不清楚该如何使用这些触发器来追 踪系统的使用情况。这篇文章描述了我是如何使用创建终端用户登陆/注销的方法来追踪终端用户的活动的。

    oracle实验报告

    (1) 了解Oracle的工作环境和基本使用方法。 (2) 练习标准SQL的数据操作,查询命令及其查询优化。 (3) 学会使用高级SQL命令,排序、分组、自连接查询等。 (4) 学会使用SQL*PLUS命令显示报表,存储到文件等。 【实验...

    Oracle 10g 学习笔记

    │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置listener.ora【避免出现ORA-12514错误】.txt │ 贴子树状态存储结构.jpg │ 贴子树状态存储结构.sql │ ├─01 Oracle入门 │ 01 Oracle 简介.txt │ 02 ...

    oracle知识点及常用技术

    oracle知识点,踊跃共享,共享光荣 1,raise_application_error(-20005,''); 2,when no_data_found then 3 number(6,2)位数,保留小数位数 4 exec =call(包)函数 5create or replace trigger update_cascade after ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...

    oracle触发器使用笔记

    :NEW 和:OLD使用方法和意义,new 只出现在insert和update时,old只出现在update和delete时。在insert时new表示新插入的行数据,update时new表示要替换的新数据、old表示要被更改的原来的数据行,delete时old表示要被...

    Oracle8i_9i数据库基础

    第八章 一些高级的用法 188 §8.1 关于DECODE 188 §8.1.1 DECODE 中的if-then-else逻辑 188 §8.1.2 DECODE 的简单例子 188 §8.1.3 DECODE实现表的转置 189 §8.2 关于访问远程数据库 192 §8.2.1 数据库链接 192 ...

    Oracle 10g 开发与管理

    我相信本文会对初学者使用oracle有一个初步的使用印象。右图为我所参 考的书籍。 目录 第一讲 Oacle关系数据库 9 一. Oracle的安装 9 二. 用浏览器进入em 企业管理器 11 三.启动DBCA的方法 11 四.服务设置 11...

    Java Functions, Stored Procedures, Triggers

    oracle存储过程调用java 方法

    Oraclet中的触发器

    它就是ORACLE 8专门为进行视图操作的一种处理方法。 3系统触发器:ORACLE 8i 提供了第三种类型的触发器叫系统触发器。它可以在ORACLE数据库系统的事件中进行触发,如ORACLE系统的启动与关闭等。 触发器组成: ...

    Oracle从入门到精通

    3、数字和日期都可以使用数学运算符建立表达式。............. 4、定义空(NULL)值....................................... 5、别名................................................... 6、spool +路径............

    SQL21日自学通

    第二天查询— — SELECT 语句的使用 30 目标 30 背景 30 一般的语法规则 30 你的第一个查询 33 总结 37 问与答 38 校练场 38 练习 39 第三天表达式条件语句与运算 40 第四天函数对数据的进一步处理 60 目标 60 汇总...

    quartz1.6.5+Hibernate+Spring整合Demo

    quartz1.6.5 整合 Hibernate、Spring,本例支持同时运行多个不同的任务,每个任务动态调用的方法和时间都不一样; 附件中有支持各种数据库的脚本;本例支持Oracle10g数据库脚本;开发测试使用的IDE工具MyEclipse6.5;...

    MySQL触发器概念、原理与用法详解

    分享给大家供大家参考,具体如下:1、触发器的概念触发器(trigger)是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,...

    中美 IT 培训 C# Asp.net 笔记2

    (24课时) 讲授面向对象的分析设计方法、UML 语法及Rational Rose/MS Visio 工具的使用 和VSS的使用。 掌握面向对象的建模、分析、设计和实施方法.学习UML 建模语言和 Rational Rose /MS Visio 建模工具. 项目...

    中美 IT 培训 C# Asp.net 全套笔记1

    (24课时) 讲授面向对象的分析设计方法、UML 语法及Rational Rose/MS Visio 工具的使用 和VSS的使用。 掌握面向对象的建模、分析、设计和实施方法.学习UML 建模语言和 Rational Rose /MS Visio 建模工具. 项目...

    中美 IT 培训 C# Asp.net 笔记3

    (24课时) 讲授面向对象的分析设计方法、UML 语法及Rational Rose/MS Visio 工具的使用 和VSS的使用。 掌握面向对象的建模、分析、设计和实施方法.学习UML 建模语言和 Rational Rose /MS Visio 建模工具. 项目...

    ORCALE语句大全

    这种方式比默认的常规方式速度要快,当数据量大时,可以考虑使用这样的方法。 这时需要数据库的字符集要与客户端字符集完全一致,否则会报错 恢复(多表多文件加上大括号) 导入整个数据库 imp userid=system...

    值类型与引用类型理论内容.part01.rar

    OOAD&UML (24课时) 讲授面向对象的分析设计方法、UML 语法及Rational Rose/MS Visio 工具的使用 和VSS的使用。 掌握面向对象的建模、分析、设计和实施方法.学习UML 建模语言和 Rational Rose /MS Visio ...

    值类型与引用类型理论内容.part05.rar

    OOAD&UML (24课时) 讲授面向对象的分析设计方法、UML 语法及Rational Rose/MS Visio 工具的使用 和VSS的使用。 掌握面向对象的建模、分析、设计和实施方法.学习UML 建模语言和 Rational Rose /MS Visio ...

Global site tag (gtag.js) - Google Analytics