`
noblemoon
  • 浏览: 25452 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

触发器简介

 
阅读更多
触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,不能带参数,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。
      Oracle触发器语法
触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的。
功能:
1、 允许/限制对表的修改
2、 自动生成派生列,比如自增字段
3、 强制数据一致性
4、 提供审计和日志记录
5、 防止无效的事务处理
6、 启用复杂的业务逻辑
     触发器触发时间有两种:after和before。
1、触发器的语法:
CREATE [OR REPLACE] TIGGER触发器名 触发时间 触发事件
ON表名
[FOR EACH ROW]
BEGIN
pl/sql语句
END
其中:
触发器名:触发器对象的名称。
触发时间:指明触发器何时执行,该值可取:
before---表示在数据库动作之前触发器执行;
after---表示在数据库动作之后出发器执行。
触发事件:指明哪些数据库动作会触发此触发器:                       
insert:数据库插入会触发此触发器;
update:数据库修改会触发此触发器;
delete:数据库删除会触发此触发器。
表 名:数据库触发器所在的表。
for each row:对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。

事务的特性:
事务具有ACID四大特性:
某种意义上说,原子性是手段,一致性是目的,通过原子性的手段达到一致性的目的。
A:原子性: 做都做 不做都不做-------手段
C:一致性: 做事务操作的前后,数据保持一致性-----目的
I: 隔离性: 隔离性越强,并发性越弱
                 ---------用for update 来实现事务的隔离性 通过锁的特性:
                                     |
                            是一个加锁过程
D:永久性:同一个事务在commit 之后不能rollback


oracle中 DML语言 发生时 oracle 只操作内存,并不能自动提交
行触发器的工作原理是 俩个重要的内存表
                   old                 new
insert          ----                    ok
update         ok                   ok
delete           ok                     ----
:new --为一个引用最新的列值;
:old --为一个引用以前的列值; 这两个变量只有在使用了关键字 "FOR EACH ROW"时才存在.且update语句两个都有,而insert只有:new ,delect 只有:old;
实例

--drop trigger trig_account_spittor
create or replace trigger trig_account_spittor    
       after insert or update  
       of spittor_id,amount,status
       on spittor_account  
       for each row   
       begin
          if :new.status=1 then
           if inserting then
                update spittor set balance=(balance+:new.amount) where id=:new.spittor_id;
           end if;
          end if;
          commit;
       end;
--drop trigger trig_spittor_order
create or replace trigger trig_spittor_order    
       after insert or update   
       of id,spittor_id,name,total_price,type,status
       on spittor_order    
       for each row   
       begin
          if :new.status=1 then
           if inserting then
              if :new.type=1 then
                 insert into spittor_account(id,order_id,spittor_id,amount,fiinsh_date,status)values(seq_spittoraccount.nextval,:new.id,:new.spittor_id,:new.total_price,sysdate,:new.status);
              elsif :new.type=2 then
                  insert into spittor_account(id,order_id,spittor_id,amount,fiinsh_date,status)values(seq_spittoraccount.nextval,:new.id,:new.spittor_id,-:new.total_price,sysdate,:new.status);
              end if;
           elsif updating then
               ifld.status=1 then
                  dbms_output.put_line('warning:this order is also done it....');
               else
                   if :new.type=1 then
                      insert into spittor_account(id,order_id,spittor_id,amount,fiinsh_date,status)values(seq_spittoraccount.nextval,:new.id,:new.spittor_id,:new.total_price,sysdate,:new.status);
                  elsif :new.type=2 then
                      insert into spittor_account(id,order_id,spittor_id,amount,fiinsh_date,status)values(seq_spittoraccount.nextval,:new.id,:new.spittor_id,-:new.total_price,sysdate,:new.status);
                  end if;                  
               end if;
           end if;
          end if;
       end;
分享到:
评论

相关推荐

    SQL2005触发器简介.pdf

    SQL2005 触发器简介 SQL2005 触发器简介中,触发器是一种特殊类型的存储过程,它是在执行某些特定的 T-SQL 语句时自动执行的一种存储过程。在 SQL Server 2005 中,根据 SQL 语句的不同,把触发器分为两类:一类是 ...

    sqlserver2005学习笔记之触发器简介.pdf

    SQL Server 2005中的触发器是一种特殊类型的存储过程,它会在执行特定的T-SQL语句(如INSERT、UPDATE、DELETE)时自动触发执行。触发器的主要作用在于增强数据的完整性和有效性,它们能完成比约束更复杂的数据验证,...

    SqlServer触发器调用WebService

    #### 一、SqlServer触发器简介 在了解如何通过Sql Server触发器调用WebService之前,我们首先需要对触发器有一个基本的认识。触发器是一种特殊的存储过程,它被定义为当特定类型的事件(如INSERT、UPDATE或DELETE)...

    在DB2中创建第一个触发器

    ### DB2触发器简介 DB2(IBM DB2 Universal Database)是一款高性能的关系型数据库管理系统,广泛应用于企业级数据处理场景。触发器作为DB2中的一种高级特性,能够增强数据完整性,确保数据一致性,实现复杂的业务...

    触发器的一个例子触发器的一个例子

    ### 触发器简介 在数据库管理中,触发器是一种存储过程,它定义了当特定事件(如数据表上的INSERT、UPDATE或DELETE操作)发生时所执行的动作。触发器对于确保数据完整性、执行复杂的业务逻辑以及自动化数据库任务...

    D触发器二分频电路图

    #### 一、D触发器简介 D触发器是一种基本的数字逻辑元件,广泛应用于数字电子系统中。它主要用于数据存储或数据选择等功能。D触发器的特点是它只有一个数据输入端D,以及一个时钟输入端CLK。在时钟信号的上升沿或...

    RS触发器应用详解

    #### 一、RS触发器简介 **RS触发器**是一种基本的数字逻辑组件,常用于构建更复杂的逻辑电路。它具备两种稳定状态,并且可以通过特定的输入信号改变这两种状态。RS触发器之所以被称为“基本RS触发器”,是因为它是...

    sql触发器语法兼实例

    #### 一、触发器简介 触发器是一种特殊的存储过程,它可以在用户尝试对指定的表进行数据修改操作时自动执行。这种机制在数据库管理中非常有用,因为它可以帮助确保数据的一致性和完整性。当对表进行插入(INSERT)...

    oracle数据库触发器实例

    #### 一、触发器简介 在Oracle数据库中,触发器是一种存储过程,它被设计为当特定事件(如数据插入、更新或删除)发生时自动执行。触发器可以用于执行复杂的业务逻辑或者数据完整性检查等操作。本文将通过三个具体...

    ORACLE触发器在软件开发中的应用11

    Oracle触发器简介** Oracle触发器是一种数据库对象,它与特定的表相关联,并在对表执行DML(INSERT, UPDATE, DELETE)操作时自动触发执行。触发器的目的是增强数据的一致性、正确性和规范性。在C/S架构中,触发器是...

    数据库触发器ppt

    详细介绍了数据库触发器的原理 与开发 使读者能够快速的掌握数据库触发器的开发技术

    SQL server创建触发器实现级联删除

    #### 一、触发器简介 触发器是一种SQL Server提供的机制,它允许用户定义当某些特定的数据操作(如INSERT、UPDATE或DELETE)发生时应该执行的动作。触发器可以用来维护数据完整性、审计数据更改或者实现复杂的业务...

    触发器实现sql记录

    #### 二、触发器简介 **触发器**是一种特殊的存储过程,它会在特定的事件(如INSERT、UPDATE或DELETE)发生时自动执行。触发器可以用来强制实施复杂的业务规则或者维护数据的一致性。在本例中,我们将使用触发器来...

    mysql触发器教程

    #### 一、MySQL触发器简介 MySQL触发器是一种存储在数据库中的特殊类型的存储过程,当特定的事件(如插入、更新或删除数据)发生时自动执行。它们允许用户定义一系列复杂的规则和逻辑,以便在数据库操作时执行额外的...

    ATM存储和触发器

    触发器简介** 触发器是一种特殊类型的存储过程,它会在特定事件发生时自动执行,例如当数据被插入、更新或删除时。触发器可以用来实现复杂的业务逻辑和数据完整性检查。 **2. 触发器的应用场景** - **数据审计**...

    交流耦合的触发器电路图

    ##### 2.2 触发器简介 触发器是一种具有两个稳定状态的双稳态器件,广泛应用于数字电路中作为存储单元。常见的触发器有RS触发器、JK触发器等。本文讨论的交流耦合触发器,通过外部触发信号控制状态切换,实现了信号...

    数据库触发器

    #### 二、触发器简介 触发器是SQL Server等数据库管理系统提供的一个特性,它可以在特定的事件发生时(如数据插入、删除或更新)自动执行一系列SQL命令。触发器类似于存储过程,但它们是在特定的时刻由系统自动调用...

    触发器的入门例子加注释

    #### 一、触发器简介 触发器是一种特殊类型的存储过程,当在数据库中执行特定事件(如插入、更新或删除数据)时自动执行。触发器可以用来确保数据完整性,并且可以执行比简单约束更复杂的逻辑。 #### 二、示例...

Global site tag (gtag.js) - Google Analytics