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

Oracle 触发器介绍和使用示例

阅读更多

        触发器是一种特殊的过程,但是用户不能直接调用触发器。触发器是特定事件出现时自动执行的代码块

 

        触发器示例

        

create or replace trigger biufer_emp_empno  --触发器名称
before insert or update          --触发语句
of empno
on emp                          --on 目标表
referencing old as old_value
		new as new_value
for each row
when(new value.empno<>7782)     --触发器限制
begin
	:new_value.comm:=0;         --触发操作
end;
/

        触发器名称中应该包含触发器执行时间、执行的操作、涉及的表或列

        如:

        biufer --> before insert or update for each row

 

        emp代表emp表,empno代表empno列,这可以指出触发器会涉及哪个列的值

      

        语句触发器

        1、用户可能需要在表上进行安全检查的insert、update或delete语句触发器,以便根据用户的具体业务规则验证正在进行操作的用户是否具有指定的权限

        

CREATE TABLE FOO(a number);
create or replace trigger biud_foo_a
before insert or update or delete
on foo
begin
 if user not in ('jack','Clinton') then
    raise_application_error(-20001,'你没有修改此表的权限') 
 end if;
end;
/ 

       如果用户不是...没有权限修改  

       在emp_copy表上创建一个触发器,当对emp_copy表执行插入、删除或更新操作是,该触发器将会填充emp_copy_log

       

create or replace trigger biufer_emp_copy
before insert or update or delete
on emp_copy
begin 
   insert into emp_copy_log values(user,sysdate);
end;
/

    然后测试该触发器。修改emp_copy

    

create table emp_copy_log(
who varchar2(30),
when date)
/

    

        行触发器  http://swordshadow.iteye.com/admin/blogs/1966002

 

       instead of 触发器

       instead of触发器是Oracle系统用来替换所使用的实际语句而执行的触发器,与导致触发器激活的语句执行之前或执行之后的语句触发器和行触发器不同

 

        示例:首先在emp表上创建emp_job视图

        

create or replace view emp_job
        as
        select empno, ename, job from emp;

 

 

       接着在emp_job视图上创建一个触发器。使得对emp_job视图的数据更新转变为对emp表的数据更新

create or replace trigger update_emp_job_view
instead of update
on emp_job
begin 
   update emp
   set empno = :new.empno,
         ename = :new.ename,
         job = :new.job
   where empno = :old.empno

        在触发器的主体有一个对表emp的update关键字。由于emp_job视图是建立在emp表上的视图,如果更新这个视图,实际上就是更新该图的基本表

 

 

删除触发器:

ALTER TRIGGER 名称 DISABLE;
drop trigger 名称;

 

    其他资料参考:

 

    

两个经典的Oracle触发器示例

      

分享到:
评论

相关推荐

    调试oracle触发器方法

    调试Oracle触发器是开发和维护数据库应用程序时的重要步骤,可以帮助我们找出潜在的错误和逻辑问题。下面我们将详细探讨如何调试Oracle触发器。 1. **PL/SQL Developer工具调试**: - PL/SQL Developer是一款强大...

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

    总之,"Oracle触发器实时调用Java中HTTP接口"是一个数据库与应用程序实时通信的示例,涉及Oracle的触发器、存储过程和UTL_HTTP包,以及Java HTTP服务器的设计和实现。这样的设计需要对Oracle PL/SQL和Java网络编程有...

    Oracle触发器 实例讲解

    Oracle 触发器实例讲解 Oracle 触发器是一种特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。它主要有以下几个功能: 1. 允许/限制对表的修改:触发器可以控制对表的修改操作,...

    oracle触发器功能介绍

    理解并正确使用Oracle触发器,可以帮助我们更好地管理和保护数据库中的数据,同时要注意合理使用,以避免潜在的问题。通过学习和实践,我们可以将触发器作为工具箱中的一项有力武器,为数据库的健壮性和稳定性保驾...

    Oracle触发器备份表数据

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

    oracle数据库触发器实例

    以上三个示例详细展示了如何在Oracle数据库中创建和使用触发器。触发器能够自动化处理数据变更,简化开发人员的工作流程,同时确保数据的一致性和准确性。通过这些示例,我们可以看到触发器的强大功能及其在实际应用...

    oracle触发器实例讲解

    以下是一些实例,详细解释了如何创建和使用Oracle触发器: **实例1**:创建了一个名为`test_trigger`的触发器,当对`test`表执行DML操作时,将用户操作类型(INSERT、UPDATE或DELETE)和当前时间记录到`test_log`...

    oracle触发器语法要点

    ### Oracle触发器语法要点 #### 一、触发器概述 Oracle触发器是一种存储过程,它在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行。触发器可以用于实施复杂的业务规则、数据完整性检查或者自动生成...

    oracle触发器执行顺序.pdf

    总结以上知识点,Oracle触发器的执行顺序和功能主要围绕着行级触发器和语句级触发器的概念展开,它们根据触发器定义的BEFORE或AFTER,以及DML操作发生前后的不同阶段执行。触发器可以包含复杂的逻辑判断,并在满足...

    oracle触发器

    通过以上介绍,我们可以看到Oracle触发器的强大功能和灵活性,它能够帮助我们实现复杂的业务逻辑,确保数据的完整性和安全性。然而,合理设计和管理触发器也非常重要,不当的使用可能会导致性能问题或难以调试的错误...

    oracle触发器实例

    - 行级触发器示例1:当向salary表插入新记录时,打印出插入的员工ID、工资月份和金额。 - 行级触发器示例2:在更新salary表时,确保金额不会变为负数。 - INSTEAD OF触发器:当试图在视图上执行DML操作时,实际...

    oracle触发器与存储过程高级编程

    总之,“Oracle触发器与存储过程高级编程”是数据库开发中的重要技能,理解它们的工作原理、如何创建和使用,以及何时应该避免使用,对于提升数据库管理效率和数据安全性至关重要。通过实践和学习,你可以更好地掌握...

    ORACLE触发器、内置程序包教学.doc )

    ### 触发器示例 以下是一个具体的触发器创建示例: ```sql CREATE OR REPLACE TRIGGER biu_emp_deptno BEFORE INSERT OR UPDATE OF deptNo ON Emp FOR EACH ROW WHEN (New.deptNo &lt;&gt; 40) BEGIN :New.comm := 0; ...

    oracle创建触发器实例

    总结来说,这个Oracle创建触发器的实例展示了如何使用触发器进行权限控制和日志记录,同时提供了关于如何处理和阻止非预期的DDL操作的示例。这在大型企业系统中尤其重要,因为它们需要严格的数据安全性和审计追踪...

    Oracle触发器与存储过程高级编程1

    Oracle触发器与存储过程 实例,使用 高级编程 存储过程 触发器 E-MAIL 及错误处理。 共4个部分.

    触发器使用教程和命名规范

    触发器使用教程和命名规范 Oracle 触发器是一种数据库对象,它与某张表相关联,当有 DML 语句对表进行操作时,可以引起触发器的执行,达到对插入记录的一致性、正确性和规范性控制的目的。 触发器的实现比较灵活,...

    Oracle触发器详解

    ### Oracle触发器详解 在数据库管理系统中,Oracle触发器是一种特殊类型的存储过程...总之,Oracle触发器提供了一种灵活的方式来处理数据库中的事件,通过合理的规划和设计,可以极大地增强应用程序的功能性和安全性。

    oracle函数触发器游标等几个小例子

    在`v_ceshiFunction.sql`和`v_ceshiFunction(表名当参数).sql`中,可能包含了自定义函数的创建和使用示例。函数可以接受参数,执行特定操作,然后返回结果。例如,你可以创建一个计算平均值的函数,或者一个检查输入...

    oracle触发器的创建和跨数据库查询.zip

    在这个“oracle触发器的创建和跨数据库查询”的主题中,我们将深入探讨如何创建触发器以及如何利用数据库链接(DB Link)进行跨数据库查询和操作。 首先,让我们了解如何创建Oracle触发器。触发器的创建通常涉及...

    Oracle触发器语法

    总的来说,Oracle触发器是数据库设计和管理中的一个强大工具,它们允许开发人员创建复杂的业务逻辑,确保数据的准确性和一致性,同时增强系统的安全性。然而,由于触发器可能影响性能,因此在设计时需要谨慎,避免...

Global site tag (gtag.js) - Google Analytics