`
8366
  • 浏览: 808987 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

oracle trigger 的使用

    博客分类:
  • DB
阅读更多

 

 

1.目的:
     网厅前台订单查询中只查到netb_order的内容,由于接到一个越级投诉,用户需要看到预受理单子
关于10000号客户人员对订单的回复,由于订单表根据订单类型的不同,关联的是不同的订单明细表,10000号
客服人员的回复存在不同的订单明细表里,于是考虑在数据库级别使用触发器。这样改动量小


2.实现:

a.首先在netb_order中加一个字段 叫 replycontent 用来存10000号客服人员对订单的回复
b.在各种订单明细表中都加上 trigger ,当有10000号客服人员添加回复的时候,trigger 会自动把明细表
回复内容同步到netb_order 中的replycontent 字段

 

 

什么是触发器?

 

触发器
  是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。
  功能:
  1、 允许/限制对表的修改
  2、 自动生成派生列,比如自增字段
  3、 强制数据一致性
  4、 提供审计和日志记录
  5、 防止无效的事务处理
  6、 启用复杂的业务逻辑

 

 

 

先写一个例子玩玩 ,建立两个表test1,test2,表结构一样,  当往test1表中插入数据的时候,使用触发器,自动往test2表中也插入一条数据

 

create or replace trigger tr_insert_test1
  before insert on test1
  for each row
begin

insert into test2 values(:new.id,:new.name);

end;

 

 

当使用 insert into test1(id,name) values('123','huxl');的时候 test2表中也多了一条记录

 

 

:new --为一个引用最新的列值;
:old --为一个引用以前的列值; 这两个变量只有在使用了关键字 "FOR EACH ROW"时才存在.且update语句两个都有,而insert只有:new ,delect 只有:old;

 

before表示在操作完成前触发, after表示在完成后触发

 

下面完成我们的业务

 

 

 

3.步骤:
a. 见将历史数据同步到netb_order表中

update netb_order o  set o.replycontent= (select up.replycontent
from
netb_PackagesNewSetUp up  where up.id=o.businessid);



update netb_order o  set o.replycontent= (select ps.reply
from
netb_phonenewsetup ps  where ps.id=o.businessid);



update netb_order o  set o.replycontent= (select sr.reply
from
netb_selfhoodreq sr  where sr.selfhoodreqid=o.businessid);


update netb_order o  set o.replycontent= (select ci.reply
from
netb_cards_info ci  where ci.id=o.businessid);


update netb_order o  set o.replycontent= (select bo.reply
from
netb_basicorder bo  where bo.id=o.businessid);


2. 为订单从表添加触发器


drop trigger xxx

触发器需要一个一个执行

create or replace trigger tr_netb_PackagesNewSetUp
  after update of replycontent on netb_PackagesNewSetUp
  for each row
begin
update netb_order set replycontent=:new.replycontent where businessid=:old.id;

end;


create or replace trigger tr_netb_phonenewsetup
  after update of reply on netb_phonenewsetup
  for each row
begin
update netb_order set replycontent=:new.reply where businessid=:old.id;

end;

create or replace trigger tr_netb_selfhoodreq
  after update of reply on netb_selfhoodreq
  for each row
begin
update netb_order set replycontent=:new.reply where businessid=:old.selfhoodreqid;

end;


create or replace trigger tr_netb_cards_info
  after update of reply on netb_cards_info
  for each row
begin
update netb_order set replycontent=:new.reply where businessid=:old.id;

end;



create or replace trigger tr_netb_basicorder
  after update of reply on netb_basicorder
  for each row
begin
update netb_order set replycontent=:new.reply where businessid=:old.id;

end;

 

 

 

 

 参考:

http://hi.baidu.com/zhangyadong110/blog/item/289220233f983baf4723e807.html

 

http://space.itpub.net/12045182/viewspace-613908

 

 

 

分享到:
评论

相关推荐

    Oracle Trigger

    本文将详细介绍Oracle触发器的概念、类型以及如何使用触发器来实现复杂的数据控制。 #### 二、触发器的概念与类型 **1. 触发器的基本概念** 触发器是一种特殊的存储过程,它在特定数据库事件(如INSERT、UPDATE或...

    Oracle Table Form Trigger

    - Oracle Forms Trigger.txt 可能专注于如何在Oracle Forms中使用触发器,如在表单级别触发器的应用,以及它们如何与表单事件交互。 - MAIN_TABLE.txt 可能是一个具体的数据库表格的详细描述,包含其结构、字段和...

    使用JDeveloper开发WEB应用时同时使用Oracle的sequence和trigger

    本篇将重点介绍如何在使用JDeveloper这款强大的集成开发环境(IDE)时,结合Oracle的sequence和trigger来实现高效的数据操作。 首先,让我们理解一下sequence和trigger的概念。在Oracle中,sequence是一种自动递增...

    oracle trigger(1)

    ### Oracle Trigger 概述 #### 6.1 触发器的类型 ##### 6.1.1 DML 触发器 DML (Data Manipulation Language) 触发器是一种特殊的触发器类型,它会在特定的数据操纵语言操作(如 INSERT、UPDATE 或 DELETE)执行时...

    oracle trigger at a certain time

    标题“Oracle Trigger at a Certain Time”涉及到Oracle数据库中的定时触发器,这是一种数据库对象,它可以在特定时间或事件发生时自动执行预定义的SQL语句或PL/SQL块。Oracle Trigger是数据库应用程序的重要组成...

    oracle trigger研究笔记

    这是本人为公司ERP开发人员做的trigger报告,内容全面,并比较深入,有图例说明解释,以及一些流程图例等,是学习trigger的一个很好笔记。

    oracle触发器的创建与使用

    在Oracle中,查看、编辑、重命名和删除触发器同样使用类似的操作,如`SELECT * FROM USER_TRIGGERS`来查看触发器,`ALTER TRIGGER`用于编辑,`RENAME TRIGGER`用于重命名,`DROP TRIGGER`用于删除。 通过学习和掌握...

    oracleform常用Trigger的触发时机.pdf

    oracleform常用Trigger的触发时机.pdf

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

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

    oracle_trigger.rar_trigger

    Oracle数据库中的触发器(Trigger)是一种数据库对象,用于在特定的数据库操作(如INSERT、UPDATE、DELETE)发生之前或之后自动执行预定义的SQL语句或PL/SQL代码块。触发器是数据库级别的事件响应机制,它允许开发...

    trigger语法经典语法全

    ### Trigger语法详解 #### 一、引言 在数据库领域,触发器(Trigger)是一种特殊类型的存储过程,它被设计用于响应对特定表的数据修改操作(如INSERT、UPDATE或DELETE)。触发器能够在这些操作发生时自动执行,...

    Oracle培訓Procedure﹑Function等简介

    Oracle培訓Oracle Procedure﹑Function、Trigger等

    oracle异常及触发器.pptx

    这些异常可以直接使用,不需要声明。 用户定义异常需要程序员自己定义代码,对异常情况进行处理。例如,声明一个名为 e_toomanystudents 的异常,可以在程序中引发该异常,以处理过多学生的情况。 声明异常情态...

    Oracle触发器备份表数据

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

    oracle自治事务(Trigger)

    ### Oracle自治事务(Trigger)详解 #### 一、概述 Oracle数据库中的触发器是一种存储过程,它被设计为当特定事件发生时自动执行。这些事件包括数据修改操作,如INSERT、UPDATE或DELETE等。触发器可以确保数据的...

    oracle触发器调用存储过程

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

Global site tag (gtag.js) - Google Analytics